使用Python删除阿拉伯语Diacritic



我想通过使用Python 删除阿拉伯语Diacritic来过滤我的文本

例如

文字:الهمَ\1604;اغ填充字符串后:اللهماغ

我发现使用CAMeL工具可以做到这一点,但我不确定是如何做到的

您可以像这样使用pyArabic库:

import pyarabic.araby as araby
before_filter="اللَّهمَّ اغْفِرْ لنَا ولوالدِينَا"
after_filter = araby.strip_diacritics(before_filter)
print(after_filter)
# will print : اللهم اغفر لنا ولوالدينا

你可以尝试不同的条形过滤器:

araby.strip_harakat(before_filter)  # 'اللّهمّ اغفر لنا ولوالدينا'
araby.strip_lastharaka(before_filter)  # 'اللَّهمَّ اغْفِرْ لنَا ولوالدِينَا'
araby.strip_shadda(before_filter)  # 'اللَهمَ اغْفِرْ لنَا ولوالدِينَا'
araby.strip_small(before_filter)  # 'اللَّهمَّ اغْفِرْ لنَا ولوالدِينَا'
araby.strip_tashkeel(before_filter)  # 'اللَّهمَّ اغْفِرْ لنَا ولوالدِينَا'
araby.strip_tatweel(before_filter)  # 'اللَّهمَّ اغْفِرْ لنَا ولوالدِينَا'

Oneliner:

text = 'text with Arabic Diacritics to be removed'    
text = ''.join([t for t in text if t not in ['ِ', 'ُ', 'ٓ', 'ٰ', 'ْ', 'ٌ', 'ٍ', 'ً', 'ّ', 'َ']])
print(text)

如果你想要完整的阿拉伯语变体列表,你也可以从pyArabic获得,独立的例子:

import unicodedata
try:
unichr
except NameError:
unichr = chr
text = 'اللَّهمَّ اغْفِرْ لنَا ولوالدِينَا '    
text = ''.join([t for t in text if t not in [unichr(x) for x in range(0x0600, 0x06ff) if unicodedata.category(unichr(x)) == "Mn"]])
print(text)

最新更新