我用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)发布于 2013-10-18 00:37:14
问题就在这一行:
newData = newData+sLine+'\n'+newLine+'\n'sLine已经包含换行符,所以您应该删除第一个'\n‘。如果newLine的长度小于20,那么newLine也包含换行符。在其他情况下,您应该向其添加换行符。
试试这个:
newData = newData + sLine + newLine
if len(seqData[k]) > 20:
newData += '\n'发布于 2013-10-18 00:00:25
sLine已经包含了换行符。如果newLine较短或等于20个字符,则editLine也将包含换行符。你可以改变
newData = newData+sLine+'\n'+newLine+'\n'
至
newData = newData+sLine+newLine
在editLine大于20个字符的情况下,在执行tempLine = editLine[0:20]时,尾随换行符将被切断,并且需要自己为newData添加一条换行符。
根据python 关于读行的文档 (由readline使用),在每一行中都保留尾随换行符:
从文件中读取整行。字符串中保留尾随换行符(但当文件以不完整行结尾时可能不存在)。6如果size参数是存在且非负的,则为最大字节计数(包括尾尾换行符),并且可能返回不完整的行。当大小不是0时,只有在立即遇到EOF时才返回空字符串。
通常,当您遇到意外行为时,通过打印变量的值,您通常可以在调试程序方面走很长的路。例如,用sLine打印print repr(sLine)会向您显示那里有一个尾随的换行符。
https://stackoverflow.com/questions/19439231
复制相似问题