我正在处理Unicode文件。我的句子之间的间距非常大,例如
തൃശൂരില് ഹര്ത്താല് പൂര്ണം
തൃശൂവില് ഇടതുമുന്നണി ഹര്ത്താലില് ജനജീവിതം പൂര്ണമായും സ്...
ഡി.വൈ.എഫ്.ഐ. ഉപരോധം; കലക്ടറേറ്റ് സ്തംഭിച്ചു
തൃശൂര്: നിയമനനിരോധനം, അഴിമതി, വിലക്കയറ്റം എന്നീ വിഷയങ്ങള് മുന്...
ബൈക്ക് പോസ്റ്റിലിടിച്ച് പതിന്നേഴുകാരന് മരിച്ചു
如何删除这些大空间?
我试过这个
" ".join(raw.split())
根本不起作用。有什么建议吗?
答案 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>