Нет смысла тестировать «если строка содержит символы Юникода», потому что все символы являются символами Юникода. Стандарт Unicode охватывает все кодовые точки, поддерживаемые Python, включая диапазон ASCII (коды Unicode с U + 0000 до U + 007F).
Если вы хотите проверить Emoji кода, тестирования для определенных диапазонов, как указано в Unicode Emoji class specification:
re.compile(
u'[\u231A-\u231B\u2328\u23CF\23E9-\u23F3...\U0001F9C0]',
flags=re.UNICODE)
, где вы должны выбрать то, что вы кодовые считают Emoji. Я лично не включил бы U+0023 NUMBER SIGN в эту категорию, например, но, по-видимому, стандарт Unicode делает.
Примечание. Чтобы быть явным, указанное выше выражение не является полным. В категории Emoji есть 209 отдельных записей, и мне не хотелось писать их все.
Другое примечание: в приведенном выше примере используется escape-последовательность Unicode \Uhhhhhhhh
; его использование поддерживается только в шаблоне regex в Python 3.3 и выше или в wide (UCS-4) build для более ранних версий Python. Для узкой сборки Python вам понадобится match on surrogate pairs для кодовых страниц по U + FFFF.
** Все символы ** являются символами Юникода. Простым тестом будет 'if string:'; просто проверьте непустые строки. Любой символ, который Python может помещать в строку, является частью стандарта Unicode. –
Возможно, вы хотели проверить наличие * не-ASCII-кодовых точек * или что-то подобное? –
Вы просто проверяете эмоции? Технически все символы ASCII также присутствуют в юникоде, поэтому вам нужно быть немного более конкретным, когда вы говорите, что вы «проверяете символы Unicode». –