Удаление только определенных диакритических знаков из текста в python - PullRequest
0 голосов
/ 11 декабря 2019

Мне нужно удалить некоторые диакритические знаки из текста на иврите. Если бы мне нужно было убрать текст со ВСЕХ диакритических знаков, это не было бы такой проблемой.

В Юникоде диапазон, который я хотел бы удалить, находится между \ u0591 и \ u05AF (или 1425 - 1455 в десятичном виде). все остальные символы (буквы, диакритические знаки или знаки пунктуации) в идеале должны оставаться.

ввод - текстовый файл, вывод - также текстовый файл. Каков будет лучший способ удалить только диапазон символов Юникода? или, возможно, юникод не в том направлении ...?

edit:

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

    normalized=unicodedata.normalize('NFKD', content)
    no_diacritics=''.join([c for c in normalized if not 
    unicodedata.combining(c)])
    no_diacritics
    f.close()

Буду признателен за вашу помощь! Спасибо.

1 Ответ

0 голосов
/ 12 декабря 2019

Если я правильно понимаю, это должно делать то, что вам нужно:

normalized = unicodedata.normalize('NFKD', content)
no_diacritics = ''.join(c for c in normalized if not '\u0591' <= c <= '\u05af')

Проверяет каждый символ на диапазон, который вы хотите исключить. Выражение '\u0591' <= c <= '\u05af' использует лексический порядок сортировки символов, который совпадает с их кодовыми точками. Вы также можете написать 0x0591 <= ord(c) <= 0x05af или даже 1425 <= ord(c) <= 1455, если вы предпочитаете числовое сравнение.

...