Python собрать вместе ASCII и UTF-8 вещи - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть текстовый файл "words.txt", который содержит английские слова. Предположим, в нем всего три слова: «один», «два» и «три». У меня также есть три файла: one.dat, two.dat и three.dat. Каждый из этих файлов содержит двоичные данные, представляющие транскрипцию соответствующего слова. Формат UTF-8. Что я хочу: я хочу объединить "words.txt" и все эти .dats в один документ, который я смог бы распечатать. Поэтому мне нужно что-то вроде этого (давайте назовем это «final.dat»):

один [Ван] два [ту:] три [? ri:]

но с правильным знаком "th" вместо "?" :)

Самое главное, чтобы я мог загружать "final.dat" в MSWord или Writer и распечатывать его.

Я собираюсь сделать это с помощью Python, но я действительно застрял со всеми этими «кодеками», «кодирует», «декодирует» и так далее ...

1 Ответ

4 голосов
/ 09 ноября 2011

В Python 2.x чтение файла UTF-8 может быть выполнено с использованием

open('one.dat').read().decode('utf-8')

или

codecs.open('one.dat', encoding='utf-8').read()

, оба из которых возвращают объект Python unicode.Если вы хотите превратить str (ASCII / двоичная строка) s в unicode, используйте s.decode('utf-8').

В Python 3.x просто наберите

open('one.dat').read()

или

open('one.dat', encoding='utf-8').read()

Идея состоит в том, что объект str (Py2.x) или bytes (Py3.x) содержит только двоичное представление строки в some кодирование без указания, какая это кодировка;метод decode превращает это в правильную строку Unicode (unicode в 2.x, str в 3.x).

(Кстати, UTF-8 не является «двоичными данными»,это просто текст в кодировке, отличной от ASCII.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...