首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本文件输出python 3中删除空行

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

Stack Overflow用户
提问于 2013-10-17 23:49:15
回答 2查看 785关注 0票数 0

我用python 3编写了一个编辑文本文件的程序,并将编辑后的版本输出到一个新的文本文件中。但是新文件有空白行,我无法使用,我也想不出如何去掉它们。

提前谢谢。

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-18 00:37:14

问题就在这一行:

代码语言:javascript
复制
newData = newData+sLine+'\n'+newLine+'\n'

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

试试这个:

代码语言:javascript
复制
newData = newData + sLine + newLine
if len(seqData[k]) > 20:
   newData += '\n'
票数 1
EN

Stack Overflow用户

发布于 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)会向您显示那里有一个尾随的换行符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19439231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档