0

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

2 回答 2

1

sLine已经包含换行符。如果长度小于或等于 20 个字符,newLine也将包含换行符。editLine你可以改变

newData = newData+sLine+'\n'+newLine+'\n'

newData = newData+sLine+newLine

editLine超过 20 个字符的情况下,尾随换行符将在您这样做时被截断,tempLine = editLine[0:20]您需要为newData自己附加一个换行符。

根据readline 上的 python 文档(由 readlines 使用),尾随换行符保留在每一行中:

从文件中读取一整行。结尾的换行符保留在字符串中(但当文件以不完整的行结尾时可能不存在)。[6] 如果 size 参数存在且非负数,则它是最大字节数(包括尾随换行符),并且可能会返回不完整的行。当 size 不为 0 时,仅当立即遇到 EOF 时才返回空字符串。

通常,当您遇到意外行为时,通过打印变量的值通常可以在调试程序方面取得很大进展。例如打印sLineprint repr(sLine)告诉你那里有一个尾随换行符。

于 2013-10-18T00:00:25.713 回答
1

问题出在这一行:

newData = newData+sLine+'\n'+newLine+'\n'

sLine已经包含换行符,所以你应该删除第一个 '\n'。如果长度newLine小于 20,则newLine还包含换行符。在其他情况下,您应该向其添加换行符。

尝试这个:

newData = newData + sLine + newLine
if len(seqData[k]) > 20:
   newData += '\n'
于 2013-10-18T00:37:14.807 回答