Привет, я пытаюсь использовать unicodedata
в python 3.7 на Linux, но, к сожалению, это не удается. Любая помощь приветствуется.
Я искал net по той же проблеме, но не смог найти ни одной подсказки, которая указала бы мне в правильном направлении.
Моя проблема : Я использую unicodedata.name(string)
и получаю ошибку TypeError: name() argument 1 must be a unicode character, not str
.
Минимальный рабочий пример
#!/usr/bin/env python3
import re
import emoji
import unicodedata
def replace_emoji(document):
emoji_all = emoji.EMOJI_ALIAS_UNICODE.items()
emoji_items = []
emoji_pattern = re.compile(u'|'.join(
re.escape(u[1]) for u in emoji_all), flags=re.UNICODE)
emoji_items = re.findall(emoji_pattern, document)
for item in emoji_items:
unicodes = []
unicode_values = []
for char in range(len(item)):
if not len(item) > 1:
unicodes.append(r'{:x}'.format(ord(item[char])).upper())
unicode_values.append([hex(ord(x)) for x in item[char]][0])
char_length = len(unicode_values)
chars = [chr(int(u, 16)) for u in unicode_values]
if char_length == 2:
print(chars)
value = u'\\U{:x}\\U{:x}'.format(
ord(chars[0]), ord(chars[1])).upper()
unicodedata.name(value)
return document
Мой тестовый прогон
print(replace_emoji(u'?????????????????????????????'))