Я ищу пакет Python, который может принимать текст в качестве входных данных и возвращать тот же текст с любым «символом Unicode, отличным от ASCII», преобразованным в слово, которое его представляет, если такое преобразование имеет смысл.
Например, учитывая текст:
This text is © John Smith. He likes √2 and €.
вывод может быть:
This text is copyright John Smith. He likes square root 2 and euro.
Подойдет любая ОС, лицензия и цена.
(Мне нужно преобразовать некоторые тексты Unicode в ASCII, и я хочу избежать использования слишком большого количества информации. Тексты представляют собой медицинские документы, написанные на английском языке.)
Не пакет, а две простые функции, которые уже могут делать то, чего вы хотите добиться:
import unicodedata
def InsertUnicodeCharNames(inputstring):
result = ""
for ch in inputstring:
if ord(ch) > 127:
result += TrimSign(unicodedata.name(ch)).lower()
else:
result += ch
return result
# remove trailing string " SIGN" from EURO SIGN, COPYRIGHT SIGN etc.
def TrimSign(inputstring):
if inputstring.endswith(" SIGN"):
return inputstring[:len(inputstring) - len(" SIGN")]
else:
return inputstring
Это пример использования:
print(InsertUnicodeCharNames("This text is © John Smith. He likes √2 and €."))
возвращается
This text is copyright John Smith. He likes square root2 and euro.
К сожалению, этот подход приведет к ужасным результатам для акцентированных символов:
print(InsertUnicodeCharNames("Beyoncé planning to perform with Motörhead!"))
возвращается
Beyonclatin small letter e with acute planning to perform with Motlatin small letter o with diaeresisrhead!
Томас Веллер