2013-05-30 144 views
0

打開我的輸入文件在vi編輯器像Python字符串拆分^ 不工作

ACT211111011100000000000000000000000606018^\10421040036991^\M/S DOHAR TRADERS^\BD^\167^\050^\000000579300^\000000579300^\ 
ACT211111011100000000000000000000000606018^\16711010000040^\M/S RAKIB TRADERS^\BD^\167^\050^\000100200386^\000100200386^\ 
ACT211111011100000000000000000000000606018^\16711010000101^\M-S, OVI ENTERPRISE^\BD^\167^\050^\000000000000^\000000000000^\ 
ACT211111011100000000000000000000000606018^\16711010000110^\MS. PUSPALATA CONSTRUCTION^\BD^\167^\050^\000000117900^\000000117900^\ 

我想分裂樣

ACT211111011100000000000000000000000606018 10421040036991 M/S DOHAR TRADERS BD 167 050 000000579300 000000579300 

這裏字符串我已經給了我是代碼測試

#!/usr/bin/python 
import os 
flag220 = 0 
f=file("/oasis/ist75/tmp/aa","r").readlines() 
linecount=len(f)-1 
for i in range(linecount): 
     mycmds = [] 
     index = linecount-i-1 
     line = f[index] 
     split_line = line.split() 
     print split_line[0] 
     if split_line[0].strip() == "ACT211111011100000000000000000000000606018": 
      j=index-1 
      flag220 = 0 
      while j>-1: 
       print f[j] 
       flag220 = 1 
       break 
      j=j-1 

     if flag220 == 1: 
       for j in range (len(split_line)): 
        if split_line[j]=='050': 
         value = split_line[j+1] 
         print value 
         mycmd = './balance.sh ' + value + split_line[1].strip() 
         mycmds.append(mycmd) 
         break 
for x in range(len(mycmds)): 
    print mycmds[x] 
    os.system(mycmds[x]) 
    mycmds=[] 

print split_line[0]輸出看起來像ACT21111101110000000000000000000000060601810421040036991M/S這是不正確。請在這方面幫助我。

+0

你的代碼在哪裏試圖拆分'^ \\'? –

+1

@ IgnacioVazquez-Abrams我不確定這是一個字面的'^ \\' - 我懷疑vim是顯示某個控制字符的方式,但很可能是錯誤的 - - 但是 - 沒有看到任何嘗試分裂到任何地方 –

+2

我確定它是0x1c,但代碼甚至沒有嘗試。 –

回答

0

我終於找到了解決方案。它就像下面這樣

split_line = line.split('\x1c') 

謝謝大家的親切合作。

1

它看起來像你需要分裂^\字符以及。正則表達式可以很好地用於此:

import re 
re.split('(\^\\|\s)', line) 

這就是說,如果\^是不是字面(其中一種看起來是這樣),那麼你就需要對拆分來代替。

+0

上正確,謝謝print split_line [0]的輸出即將到來,如ACT21111101110000000000000000000000060601810421040036991M/S DOHAR TRADERSBD167050000000579300000000579300。這應該是ACT211111011100000000000000000000000606018 – tanvir

+0

我也試過split_line = line.split('0x1c')是相同的 – tanvir

+1

你需要找出你在編輯器中看到的那個字符。或者,如果它只發生在一個固定長度後,那麼你可以建立一個正則表達式。 – ydaetskcoR