Как обращаться с акцентированными символами в python? - PullRequest
1 голос
/ 18 марта 2020

Я знаю, что есть много материала об этом, но я не могу найти решение для моей проблемы.

У меня есть этот текст, записанный в текстовом файле, который я должен манипулировать, и т. Д. c. и он содержит много акцентированных символов. Я не могу управлять ими по какой-то причине. Вот мой код:

file = open ('parsed.txt', 'w', encoding = 'latin1')
file.write('ààààà')

Это отлично работает.

Но мне нужно, чтобы это тоже работало нормально:

with open('input.txt', 'r', encoding = 'latin1') as f:
    string = f.read()
    or_array = string.splitlines()
    new_array = []
    for line in or_array:
        new = (line[13:]).strip()
        print(new)
        new_array.append(new)
    new_string = ''
    for lin in new_array:
        new_string += lin
        new_string += ' '
    f_n = open('parsed.txt', 'w', encoding = 'latin1')
    f_n.write(new_string)

что не так с этим кодом?

ввод:

00:00:06.49    ciaò
00:00:20.665     Questa è una provà
00:00:44.157     èè   aa ò à ùù ù
00:00:44.157       

вывод:

ciaò Questa è una provàèè   aa ò à ùù ù  

output

спасибо.

1 Ответ

1 голос
/ 19 марта 2020

Работает для меня, если содержимое input.txt действительно соответствует ISO-8859-1. Если это в UTF-8, то вы получите неправильные результаты, которые вы видите. Другими словами, когда я копирую / вставляю ваши данные, я получаю файл с содержимым UTF-8. Если я сделаю iconv -f utf-8 -t L1 < utf8.txt > input.txt, тогда ваша программа будет работать нормально.

Кстати, ваша программа не идиоматическая c python и собирается быть очень неэффективной на больших входах.

...