我正在尝试将一个大文件拆分为单个条目。每个条目以字符“//”结尾。所以当我尝试使用
时#!/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) 因此它也在那里分裂,最终我得不到我想要的结果。我尝试使用正则表达式,但无法弄明白。
答案 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“\”进行拆分和正则表达式操作。