仅从 python 中的文本中删除特定变音符号

Removing only specific diacritics from text in python

我需要从希伯来语文本中删除某些变音符号。如果我需要从所有变音符号中删除文本,那就不是问题了。

在 unicode 中,我想删除的范围在 \u0591 和 \u05AF 之间(或十进制的 1425 - 1455)。最好保留所有其他字符(字母、变音符号或标点符号)。

输入是文本文件,输出也应该是文本文件。 仅删除一系列 unicode 字符的最佳方法是什么? 或者也许 unicode 不是正确的方向...?

编辑:

这是我用来删除所有变音符号的代码。有什么建议我可以修改它,以便它只删除所需的字符而不是所有变音符号吗?

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

感谢您的帮助!谢谢

如果我理解正确,这应该可以满足您的需求:

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