2024-09-24 10:28:11 发布
网友
我需要从字符串“بِسْمِاللَّهالّحَْٰنال”中删除一些Unicode符号
我知道他们肯定在这里。我试过:
re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')
但没用。字符串保持不变。我做错什么了?
您使用的是Python2.x还是3.0?
如果使用的是2.x,请尝试将regex字符串设置为unicode转义字符串,并使用“u”。因为这是正则表达式,所以最好将正则表达式字符串设置为原始字符串,并使用“r”。另外,将整个模式放在括号中是多余的。
re.sub(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', '', ...)
http://docs.python.org/tutorial/introduction.html#unicode-strings
编辑:
使用re.UNICODE/re.U/(?u) unicode正则表达式的标志,但它仅影响字符类别名,如\w或\b,此模式不使用任何别名,因此不会受其影响。
使用unicode字符串。使用re.UNICODE标志。
>>> myre = re.compile(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', re.UNICODE) >>> myre <_sre.SRE_Pattern object at 0xb20b378> >>> mystr = u'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ' >>> result = myre.sub('', mystr) >>> len(mystr), len(result) (38, 22) >>> print result بسم الله الرحمن الرحيم
阅读Joel Spolsky的文章,这篇文章叫做The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
您使用的是Python2.x还是3.0?
如果使用的是2.x,请尝试将regex字符串设置为unicode转义字符串,并使用“u”。因为这是正则表达式,所以最好将正则表达式字符串设置为原始字符串,并使用“r”。另外,将整个模式放在括号中是多余的。
http://docs.python.org/tutorial/introduction.html#unicode-strings
编辑:
使用re.UNICODE/re.U/(?u) unicode正则表达式的标志,但它仅影响字符类别名,如\w或\b,此模式不使用任何别名,因此不会受其影响。
使用unicode字符串。使用re.UNICODE标志。
阅读Joel Spolsky的文章,这篇文章叫做The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
相关问题 更多 >
编程相关推荐