我在python 3中编写了一个编写文本文件的程序,并将编辑后的版本输出到新的文本文件中。但是新文件有空白行,我无法解决,我无法弄清楚如何摆脱它们。
提前致谢。
newData = ""
i=0
run=1
j=0
k=1
seqFile = open('temp100.txt', 'r')
seqData = seqFile.readlines()
while i < 26:
sLine = seqData[j]
editLine = seqData[k]
tempLine = editLine[0:20]
newLine = editLine.replace(editLine, tempLine)
newData = newData+sLine+'\n'+newLine+'\n'
i=i+1
j=j+2
k=k+2
run=run+1
seqFile.close()
new100 = open("new100a.fastq", "w")
sys.stdout = new100
print(newData)
答案 0 :(得分:1)
sLine
已包含换行符。如果newLine
长度短于或等于20个字符,则editLine
也会包含换行符。你可以改变
newData = newData+sLine+'\n'+newLine+'\n'
到
newData = newData+sLine+newLine
如果editLine
超过20个字符,当您执行tempLine = editLine[0:20]
时,结尾的换行符将被切断,您需要自己在newData
附加换行符。
根据python documentation on readline(由readlines使用),每行都保留尾随换行符:
从文件中读取整行。尾随的换行符是 保留在字符串中(但是当文件以。结尾时可能不存在 不完整的线)。 [6]如果size参数存在并且 非负数,它是最大字节数(包括尾随数) 换行符)可能会返回不完整的行。当大小不是0时, 仅在立即遇到EOF时才返回空字符串。
通常,当您遇到意外行为时,通常可以通过打印变量值来调试程序。例如,使用sLine
打印print repr(sLine)
会向您显示其中有一个尾随换行符。
答案 1 :(得分:1)
问题在于这一行:
newData = newData+sLine+'\n'+newLine+'\n'
sLine
已包含换行符号,因此您应删除第一个'\ n'。如果newLine
的长度小于20,则newLine
也包含换行符。在其他情况下,您应该添加换行符号。
试试这个:
newData = newData + sLine + newLine
if len(seqData[k]) > 20:
newData += '\n'