如何删除文件中的所有空行与python的帮助?

例如,我们有一些这样的文件:

第一行
第二行

第三行

结果我们必须得到:

第一行
第二行
第三行

只使用python

 import fileinput for line in fileinput.FileInput("file",inplace=1): if line.rstrip(): print line 

with语句非常适合自动打开和closures文件。

 with open('myfile','rw') as file: for line in file: if not line.isspace(): file.write(line) 
 import sys with open("file.txt") as f: for line in f: if not line.isspace(): sys.stdout.write(line) 

另一种方法是

 with open("file.txt") as f: print "".join(line for line in f if not line.isspace()) 

我知道你问过关于Python的问题,但是你对Win和Linux的评论表明你是跨平台的,Perl至less和Python一样是跨平台的。 你可以用命令行上的一行Perl轻松完成这个任务,不需要脚本: perl -ne 'print if /\S/' foo.txt

(我喜欢Python并且在99%的时间里喜欢Perl,但是有时候我真的希望我可以用它来做命令行脚本,就像使用-e切换到Perl一样!)

也就是说,下面的Python脚本应该可以工作。 如果你期望经常这样做,或者对于大文件,那么也应该优化编译正则expression式。

 #!/usr/bin/python import re file = open('foo.txt', 'r') for line in file.readlines(): if re.search('\S', line): print line, file.close() 

有很多方法可以做到这一点,这只是一个:)

 >>> s = """first line ... second line ... ... third line ... """ >>> print '\n'.join([i for i in s.split('\n') if len(i) > 0]) first line second line third line >>> 

你有没有尝试类似下面的程序?

 for line in open(filename): if len(line) > 1 or line != '\n': print(line, end='') 

你可以用下面的方法删除所有的空行:

 with open("new_file","r") as f: for i in f.readlines(): if not i.strip(): continue if i: print i, 

我们也可以使用下面的方式将输出写入文件:

 with open("new_file","r") as f, open("outfile.txt","w") as outfile: for i in f.readlines(): if not i.strip(): continue if i: outfile.write(i)