删除unicode字符之间的空格

时间:2015-01-28 10:25:54

标签: python python-3.x unicode

我正在尝试从文本文件中删除字符之间的空格并写入另一个文本文件。 这是我的代码

f = open("/home/user1/Desktop/evaluation/gold", "r")
f2 = open("gold1.txt","a")
string =f.read().split()
s=str(string)
string2 =  " ".join(s.split())

f2.write(str(string2) +"\n")
f.close()
f2.close()

这些是单词,但它没有产生结果。

matsya k kuññuṅṅaḷa ̔e 
ora kkara 
vistr̥ti yila ̔uḷḷa 
naḻ saṟi kuḷa ttila 
vaḷara ttu ṁ
kuḷa ttinu 
cuṟṟu ṁ
plāsṟṟa ̔ik  c valaya ̔iṭṭa 
nra kkēāla ̔i yu ṁ
āma yu ṁ
kayaṟi 
matsya k kuññuṅṅaḷa ̔e 
tinnunna 
sāhacarya meāḻivā kkunnu 
ta viṭa 
piṇṇākka 
kappa 
bis  c kaṟṟa 
peāṭi ccata 
ennivaya ̔eākke yāṇa 
naḻ  c sa ṟi 
kuḷa ṅṅaḷila ̔e 

预期的结果是那些没有空格的单词

matsyakkuññuṅṅaḷae 
orakkara 
vistr̥tiyila uḷḷa 
naḻsaṟikuḷattila 
vaḷarattuṁ
kuḷa ttinu 
cuṟṟu 

1 个答案:

答案 0 :(得分:1)

如果您想删除每行的空格,请不要一次性读取整个文件。相反,逐行处理文件,如果你真的想要删除所有空格,请确保使用 empty 字符串来加入拆分结果:

with open("/home/user1/Desktop/evaluation/gold", "r") as inf, \
        open("gold1.txt","a") as outf:
    for line in inf:
        line = ''.join(line.split())
        outf.write(line + "\n")

你犯了几个错误:你一次读完整个文件,然后用f.read().split()一步分割文件内容;这也删除了所有换行符。然后,您使用str() list 再次转换为字符串,生成列表的Python表示形式,其内容为一个字符串。然后,在将其写入输出文件之前,将该字符串中的所有空格替换为其他空格:

>>> sample = '''\
... matsya k kuññuṅṅaḷa ̔e 
... ora kkara
... '''
>>> sample
'matsya k kuññuṅṅaḷa ̔e \nora kkara\n'
>>> sample.split()
['matsya', 'k', 'kuññuṅṅaḷa', '̔e', 'ora', 'kkara']
>>> str(sample.split())
"['matsya', 'k', 'kuññuṅṅaḷa', '̔e', 'ora', 'kkara']"
>>> str(sample.split()).split()
["['matsya',", "'k',", "'kuññuṅṅaḷa',", "'̔e',", "'ora',", "'kkara']"]
>>> ' '.join(str(sample.split()).split())
"['matsya', 'k', 'kuññuṅṅaḷa', '̔e', 'ora', 'kkara']"

通过循环遍历文件对象,您可以获得单独的行,从而可以保留换行符:

>>> from io import StringIO
>>> for line in StringIO(sample):
...     line = ''.join(line.split())
...     print(line)
... 
matsyakkuññuṅṅaḷa̔e
orakkara