Как разделить строку на нескольких языках в Python и получить шестнадцатеричное значение Unicode? - PullRequest
0 голосов
/ 06 января 2012

Я пытаюсь разбить этот тип строк на Python :

aiburenshi 爱 不忍 释 "לא מסוגל להינתק, לא יכול להיפרד מדבר מרוב חיבת1007 *

Эта строка содержит иврит, упрощенный китайский и английский.

Если у меня есть, например, кортеж T, я хотел бы получить кортеж T = (строка на иврите, английская строка, строка на китайском языке).

Проблема в том, что я не понимаю, как получить значение Unicode для китайских букв иврита.Обе эти строки не работают:

print ((unicode("释","utf-8")).encode("utf-8"))
print ((unicode("א","utf-8")).encode("utf-8"))

И я получаю эту ошибку:

SyntaxError: Не-ASCII символ '\ xe9' в файле split_or.py в строке 9, но кодировка не объявлена;см http://www.python.org/peps/pep-0263.html для подробностей

Ответы [ 2 ]

2 голосов
/ 06 января 2012

В Python 2 вам нужно открыть файл, указав следующую кодировку:

import codecs
f = codecs.open("myfile.txt","r",encoding="utf-8") 

В Python 3 вы можете просто добавить опцию кодирования к любым вызовам open ().

Это гарантирует, что файл правильно декодирован. Обратите внимание, что это не означает, что ваши вызовы на печать будут работать правильно, это зависит от многих вещей (см., Например, http://www.pycs.net/users/0000323/stories/14.html, и это только начало); лучше либо использовать правильный отладчик, либо выводить в файл (который снова будет открыт с помощью codecs.open ()).

Чтобы получить действительную кодовую точку (то есть целое число «значение»), вы можете использовать встроенную ord ():

>>> ord(u"£")
163

если вы знаете диапазоны для разных языков, это все, что вам нужно. См. эту страницу или эту страницу для диапазонов.

В противном случае вы можете использовать unicodedata для поиска, например, двунаправленную категорию:

>>> unicodedata.bidirectional(u"£")
ET  # 'E'uropean 'T'erminator
2 голосов
/ 06 января 2012

В Python 2 строковые константы Unicode должны начинаться с символа "u", например:

print ((unicode(u"释","utf-8")).encode("utf-8"))
print ((unicode(u"א","utf-8")).encode("utf-8"))

В Python 3 строковые константы по умолчанию являются Unicode.

...