从文本文件输出python 3中删除空行

时间:2013-10-17 23:49:15

标签: python text edit

我在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)

2 个答案:

答案 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'