如何删除文件中的所有空行与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)