2016-03-31 2 views
3

У меня возник вопрос о том, присутствует ли символ юникода в шрифте в системе.Python3 Проверьте, не присутствует ли символ Unicode

>>> chr(9966) 
'⛮' 
>>> chr(9955) 
'⛣' 
>>> chr(9955) == chr(9966) 
False 

В общем, что я пытаюсь сделать, это сделать чек, где, если значение является . Есть ли способ в python выяснить, является ли значение ?

Редактирование: теперь я понимаю, что символы Unicode не определяются по определению или неопределенностью. Но есть ли способ проверить, существует ли символ в определенном шрифте? Я на OS X.

+0

На самом деле это не печатает пустую строку, она печатает символ юникода (который, случается, не отображается). В моей системе я вижу знак вопроса в поле. – L3viathan

+6

Что вы подразумеваете под "undefined on the system"? Вы имеете в виду «нет в шрифте»? (Между прочим, оба персонажа хорошо выглядят). – Carpetsmoker

+7

Это может быть актуально http://stackoverflow.com/questions/4458696/finding-out-what-characters-a-font-supports – John

ответ

0

Это связано с используемым шрифтом и его поддержкой Unicode, а не с самим python. У меня нет этих символов в моей системе.

Использование библиотеки unidecode, любой неизвестный персонаж, кажется, возвращается как [?]:

from unidecode import unidecode 
>>> unidecode(chr(9966)) 
'[?]' 
>>> unidecode(chr(9955)) 
'[?]' 
>>> unidecode(chr(9955)) == unidecode(chr(9966)) 
True 

Этот метод полагаться на внешний вид для получить ASCii эквивалент. Некоторые другие символы Юникода можно найти как близкие к [?], так что, вероятно, вы получите некоторые ложные срабатывания.