2013-05-30 101 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