Ответы пользователя по тегу Парсинг
  • Как заменить utf8 символы?

    TrueBers
    @TrueBers
    Гуглю за еду
    Правильно понимаете.
    Осталось понять, для чего вам это нужно. Вероятно, вы хотите поиск реализовать? Типа ищешь 'а', при этом матчится 'ā'? Других вариантов не могу придумать...

    Если так, то достаточно при поиске использовать форму декомпозиции NFKC с последующей канонической рекомпозицией. Она проводит рекомпозицию по правилам совместимости, будут матчиться даже те глифы, которые визуально не похожи на исходный. Т. е. когда в языке может заменяться один символ на абсолютно другой, но при этом иметь то же самое значение.

    Если нужно "просто снять крыжечку", то используйте обычную каноническую декомпозицию NFD. Она разберёт всё на составные части. Потом нужно пройтись снова по массиву и очистить диакритику, т. е. можно взять категории Lu и Ll, если у вас чистый текст, либо очистить от Mn будет достаточно.

    Пример на Питоне:
    >>> import unicodedata
    >>> unicodedata.decomposition(unicodedata.lookup('LATIN SMALL LETTER A WITH MACRON'))
    '0061 0304'
    >>> unicodedata.decomposition(unicodedata.lookup('LATIN SMALL LETTER A WITH TILDE'))
    '0061 0303'
    Ответ написан
    8 комментариев