Выясните unicode script символа

Учитывая символ Юникода, каким будет самый простой способ вернуть его script (как "латинский", "хангул" и т.д.)? unicodedata, похоже, не предоставляет такую ​​функцию.

Ответы

Ответ 1

Я надеялся, что кто-то делал это раньше, но, видимо, нет, поэтому вот что я закончил. Модуль ниже (я называю это unicodedata2) расширяет unicodedata и предоставляет script_cat(chr), который возвращает кортеж (имя сценария, категорию) для символа юникода. Пример:

# coding=utf8
import unicodedata2
print unicodedata2.script_cat(u'Ф')  #('Cyrillic', 'L')
print unicodedata2.script_cat(u'の')  #('Hiragana', 'Lo')
print unicodedata2.script_cat(u'★')  #('Common', 'So')

Модуль: https://gist.github.com/2204527

Ответ 2

Мне кажется, что модуль unicodedata Python содержит инструменты для доступа к основному файлу в базе данных Unicode, но ничего для других файлов: "Данные в этой базе данных основаны на файле UnicodeData.txt"

Информация script находится в файле Scripts.txt. Он имеет относительно простой формат (описанный в UAX # 44) и не ужасно большой (131 килобайт), поэтому вы можете рассмотреть его разбор в своей программе, Обратите внимание, что в классификации Unicode theres "Common" script, который содержит символы, используемые в разных сценариях, например знаки препинания.

Ответ 3

Единственный способ, которым я знаю, к сожалению, получить код кода Unicode с ord(), а затем использовать вашу собственную таблицу (используя http://en.wikipedia.org/wiki/Unicode#Standardized_subsets и более). Предварительное преобразование в некоторую нормальную форму может быть в порядке, чтобы справляться с тем, что один "письменный" символ может быть выражен с помощью разных последовательностей кодовых точек (здесь модуль unicodedata помогает).

Ответ 4

Вы можете использовать ord для получения числового значения символа (он работает как для строк unicode, так и для байтов длины 1).

Следующий шаг, к сожалению, приведет вас к тестированию с диапазонами. Возможно, данные здесь будут полезны: http://cldr.unicode.org/index/downloads