2015-01-28 3 views
-1

Я пытаюсь удалить пробелы между символами из моего текстового файла и записать в другой текстовый файл. Это мой кодУдаление пробелов между символами юникода

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

Каково значение файлового объекта 'f'? – ZdaR

+0

Это для чтения текстового файла – Karun

+1

Это Python 3? Почему вы использовали 'str()' в * списке * слов, созданных 'f.read(). Split()'? –

ответ

1

Если вы хотите удалить пробелы в строке, не читает весь файл за один раз. Обработать файл построчно вместо этого, и убедитесь, что использовать пустой строки присоединиться к разделенному результату, если вы действительно хотите, чтобы удалить все пробела:

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(), создавая представление 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 
+0

Нет, он не работает. Не создавая ожидаемого результата – Karun

+0

@ Карун: вы не показали нам фактического результата. Возможно, вы используете неправильный кодек, чтобы открыть файл, например. Но я не могу диагностировать такие проблемы, если вы не покажете нам, что вы на самом деле получили *. –

+0

Хорошо, спасибо, я понимаю. Что такое образец, то – Karun

Смежные вопросы