Вставьте пробел между не-ascii символами в python - PullRequest
0 голосов
/ 26 января 2012

Я создаю словарь, который требует, чтобы каждая буква строки разделялась пробелом. Я использую соединение. Проблема в том, что строка содержит символы не ascii. Объединение разбивает их на два символа, и в результате получается мусор.

Пример:

>>> word = 'məsjø'
>>> ' '.join(word)

Дает мне:

'm \xc9 \x99 s j \xc3 \xb8'

Когда я хочу:

'm ə s j ø'

Или даже:

'm \xc9\x99 s j \xc3\xb8'

1 Ответ

3 голосов
/ 26 января 2012

Вы должны использовать строки Unicode, т.е.

word = u'məsjø'

И не забудьте установить кодировку исходного файла Python в начале с

# -*- coding: UTF-8 -*-

(Даже не думайте об использовании чего-то другого, кроме UTF-8.;))

Обновление : это относится только к Python <3. Если вы используете Python> = 3, вы, вероятно, не столкнулись бы с этими проблемами в первую очередь. Так что если обновление до 3.x является опцией, то это путь, которого может не быть в некоторых случаях из-за библиотечных зависимостей и т. Д., К сожалению.

Как упомянуто в комментариях, проблемы с кодировкой могут также возникать из-за терминала, настроенного по-другому, хотя здесь, очевидно, это не было проблемой.

...