我正在尝试从文本文件中删除字符之间的空格并写入另一个文本文件。 这是我的代码
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
答案 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