Чем отличаются модули юникод и юникодата? - PullRequest
1 голос
/ 08 мая 2019

У меня большой набор данных с более чем 2 миллионами строк текстовых данных. Теперь я хочу убрать акценты из струн.

В ссылке ниже два разных модуля описаны для удаления акцентов:

Каков наилучший способ удалить акценты в строке Unicode Python?

Описанные модули: unicode и unicodedata. Для меня не ясно, в чем разница между этими двумя понятиями, и сравнение сложно, потому что у меня не так много строк с акцентами, и я не знаю, какие акценты можно заменить, а какие нет.

Поэтому я хотел бы знать, в чем различия между этими двумя и какой из них рекомендуется использовать.

1 Ответ

1 голос
/ 08 мая 2019

Существует только один модуль: unicodedata, который включает базу данных Unicode, поэтому имена и свойства кодовых точек Unicode.

unicode была встроенной функцией в Python 2. Эта функцияпросто конвертируйте строки в строки Unicode, чтобы это была просто кодировка, не нужно хранить все данные.На python3 все строки в юникоде (с некоторыми особенностями).Только кодировка теперь должна быть определена явно.

В этом ответе вы видите только import unicodedata, поэтому только один модуль.Чтобы удалить акценты, вам нужна не только кодовая точка Unicode, но и информация о типе кодовой точки Unicode (объединяющий символ), поэтому вам нужно unicodedata.

Возможно, вы имеете в виду unidecode.Это специальный модуль, но за пределами стандартной библиотеки.Это может быть полезно для некоторых целей.Модули просты и дают только результаты в области ASCII.Это может быть хорошо в некоторых случаях, но может вызвать проблемы за пределами системы письма на латинице.

С другой стороны, unicodedata ничего не делает для вас.Вы должны понимать юникод и применять правильную функцию фильтра (и, возможно, знать, как работают другие языки).

Так что это зависит от ситуации, и, возможно, вам нужны просто другие slug функции (для созданияне экранированная строка).При работе с языками вам не следует переусердствовать (вы можете написать оскорбительное слово).

...