我有一个包含阿拉伯文和英文句子的字符串。我想要的是仅提取阿拉伯语句子。
my_string="""
What is the reason
ذَلِكَ الْكِتَابُ لَا رَيْبَ فِيهِ هُدًى لِلْمُتَّقِينَ
behind this?
ذَلِكَ الْكِتَابُ لَا رَيْبَ فِيهِ هُدًى لِلْمُتَّقِينَ
"""
该链接显示阿拉伯字母的Unicode范围是0600-06FF
。
因此,我想到的最基本的尝试是:
import re
print re.findall(r'[\u0600-\u06FF]+',my_string)
但是,这失败了,因为它返回了以下列表。
['What', 'is', 'the', 'reason', 'behind', 'this?']
如您所见,这与我想要的完全相反。我在这里想念的是什么?
NB
我知道我可以通过使用逆向匹配来匹配阿拉伯字母,如下所示:
print re.findall(r'[^a-zA-Z\s0-9]+',my_string)
但是,我不想要那样。
您可以使用re.sub
空字符串替换ascii字符。
>>> my_string="""
... What is the reason
... ذَلِكَ الْكِتَابُ لَا رَيْبَ فِيهِ هُدًى لِلْمُتَّقِينَ
... behind this?
... ذَلِكَ الْكِتَابُ لَا رَيْبَ فِيهِ هُدًى لِلْمُتَّقِينَ
... """
>>> print(re.sub(r'[a-zA-Z?]', '', my_string).strip())
ذَلِكَ الْكِتَابُ لَا رَيْبَ فِيهِ هُدًى لِلْمُتَّقِينَ
ذَلِكَ الْكِتَابُ لَا رَيْبَ فِيهِ هُدًى لِلْمُتَّقِينَ
您的正则表达式无法正常工作,因为您使用的是Python 2,并且您str
需要将字符串转换my_string
为unicode才能正常工作。但是,它在Python3.x上确实表现出色
>>> print "".join(re.findall(ur'[\u0600-\u06FF]', unicode(my_string, "utf-8"), re.UNICODE))
ذَلِكَالْكِتَابُلَارَيْبَفِيهِهُدًىلِلْمُتَّقِينَذَلِكَالْكِتَابُلَارَيْبَفِيهِهُدًىلِلْمُتَّقِينَ
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句