如何删除文本文件中句子之间的大空间?

时间:2014-01-23 14:38:53

标签: python python-2.7

我正在处理Unicode文件。我的句子之间的间距非常大,例如

 തൃശൂരില്‍ ഹര്‍ത്താല്‍ പൂര്‍ണം 



 തൃശൂവില്‍ ഇടതുമുന്നണി ഹര്‍ത്താലില്‍ ജനജീവിതം പൂര്‍ണമായും സ്‌... 





 ഡി.വൈ.എഫ്‌.ഐ. ഉപരോധം; കലക്‌ടറേറ്റ്‌ സ്‌തംഭിച്ചു 



 തൃശൂര്‍: നിയമനനിരോധനം, അഴിമതി, വിലക്കയറ്റം എന്നീ വിഷയങ്ങള്‍ മുന്‍... 





 ബൈക്ക്‌ പോസ്‌റ്റിലിടിച്ച്‌ പതിന്നേഴുകാരന്‍ മരിച്ചു 

如何删除这些大空间?

我试过这个

" ".join(raw.split())

根本不起作用。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

假设raw是您的原始数据,您需要使用str.splitlines拆分原始数据,过滤所有空行,然后使用换行符重新加入

print '\n'.join(line for line in raw.splitlines() if line.strip())

如果您愿意使用正则表达式,也可以尝试

import re
print re.sub("\n+","\n", raw)

如果raw是文件对象,则将所有连续空格分组为一个

from itertools import groupby

with open("<some-file>") as raw:
    data = ''.join(k for k, _ in groupby(raw))

答案 1 :(得分:0)

最简单的方法是将结果写入另一个文件,或将其重写到您的文件中。大多数操作系统不允许我们将直接编辑到文件中,尤其是附加。对于像这样的简单情况,重写更简单:

with open('f.txt') as raw:
    data = ''.join(raw.read().split()) #If you want to remove newlines only, use split('\n')

with open('f.txt', 'w') as raw:
    raw.write(data)

希望这有帮助!

答案 2 :(得分:0)

使用python假设行是空的(只有换行符):

import re
import sys

f = sys.argv[1]

for line in open(f, 'r'):
    if not re.search('^$', line):
        print line

或者如果您愿意:

egrep -v "^$" <filename>