除了代码中已有的内容之外,我还尝试使用newString.strip('\ n'),但它没有做任何事情。我正在输入一个应该不是问题的.fasta文件。提前谢谢。
def createLists(fil3):
f = open(fil3, "r")
text = f.read()
listOfSpecies = []
listOfSequences = []
i = 0
check = 0
while (check != -1):
startIndex = text.find(">",i)
endIndex = text.find("\n",i)
listOfSpecies.append(text[startIndex+1:endIndex])
if(text.find(">",endIndex) != -1):
i = text.find(">",endIndex)
newString = text[endIndex+1: i]
newString.strip()
newString.splitlines()
listOfSequences.append(newString)
else:
newString = text[endIndex+1:]
newString.strip()
newString.strip('\n')
listOfSequences.append(newString)
return (listOfSpecies,listOfSequences)
def cluster(fil3):
print createLists(fil3)
cluster("ProteinSequencesAligned.fasta")
答案 0 :(得分:4)
字符串是不可变的:
In [1]: s = 'lala\n'
In [2]: s.strip()
Out[2]: 'lala'
In [3]: s
Out[3]: 'lala\n'
In [4]: s = s.strip()
In [5]: s
Out[5]: 'lala'
所以就这样做:
new_string = text[end_index+1:].strip()
请遵循PEP 8。 此外,您可以使用for循环重写循环。 Python文件支持直接迭代:
In [6]: with open('download.py') as fobj:
...: for line in fobj:
...: print line
如果您不使用with
语句,请确保在函数末尾使用close()
方法关闭文件。
答案 1 :(得分:0)
那么最后我发现最好的解决方案是new_string = text [endIndex + 1:]。replace('\ n','')