基于字符串拆分文件

时间:2011-05-03 14:27:13

标签: python

我正在尝试将一个大文件拆分为单个条目。每个条目以字符“//”结尾。所以当我尝试使用

#!/usr/bin/python
import sys,os   
uniprotFile=open("UNIPROT-data.txt") #read original alignment file  
uniprotFileContent=uniprotFile.read() 
uniprotFileList=uniprotFileContent.split("//")
for items in uniprotFileList:
        seqInfoFile=open('%s.dat'%items[5:14],'w')
        seqInfoFile.write(str(items))

但我意识到还有另一个字符串“//”(http://www.uniprot.org/terms) 因此它也在那里分裂,最终我得不到我想要的结果。我尝试使用正则表达式,但无法弄明白。

5 个答案:

答案 0 :(得分:7)

如果前缀为//

,请使用仅在:分割的正则表达式
import re
myre = re.compile("(?<!:)//")
uniprotFileList = myre.split(uniprotFileContent)

答案 1 :(得分:3)

我正在使用修改过的分割模式的代码,它对我来说很好用:

#!/usr/bin/python
import sys,os   
uniprotFile = open("UNIPROT-data.txt")   
uniprotFileContent = uniprotFile.read()
uniprotFileList = uniprotFileContent.split("//\n")
for items in uniprotFileList:
    seqInfoFile = open('%s.dat' % items[5:17], 'w')
    seqInfoFile.write(str(items))

答案 2 :(得分:0)

你混淆\(反斜杠)和/(斜杠)。您不需要转义斜杠,只需使用"/"即可。对于反斜杠,您需要将其转义,因此请使用"\\"

其次,如果您使用反斜杠进行拆分,则会在斜杠上拆分,反之亦然。

答案 3 :(得分:0)

使用常规异常进行拆分,不允许在//标记之前使用“http:”部分。 例如:“([^:])\ / \ /”

答案 4 :(得分:0)

您似乎正在拆分错误的字符。根据您的问题,您应该拆分r“\”,而不是“//”。打开提示并检查您正在使用的字符串。你会看到类似的东西:

>>> "\\"
'\\'
>>> "\"
SyntaxError
>>> r"\"
'\\'
>>> "//"
'//'

因此,您可以使用“\”或r“\”(为了清晰起见,我建议使用r“\”进行拆分和正则表达式操作。