在python中只从文本中删除特定的音调符号

2024-09-30 20:38:18 发布

您现在位置: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()

谢谢你的帮助!谢谢


Tags: no字母unicode符号字符文字文本文件标点符号
1条回答
网友
1楼 · 发布于 2024-09-30 20:38:18

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

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

相关问题 更多 >