我需要从字符串‘بِسْمِاللَّهِالرَّحْمَٰنِالرَّحِيمِ’中删除一些Unicode符号。
我知道他们肯定存在于此。我试过了:
re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')
但它不起作用。字符串保持不变。我做错了什么?
发布于 2008-12-26 14:57:58
你使用的是python 2.x还是3.0?
如果您使用的是2.x,请尝试将正则表达式字符串设置为unicode转义字符串,并使用'u‘。因为它是正则表达式,所以使用'r‘使您的正则表达式字符串成为原始字符串是一种很好的做法。此外,将整个模式放在括号中也是多余的。
re.sub(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', '', ...)
http://docs.python.org/tutorial/introduction.html#unicode-strings
编辑:
对unicode正则表达式使用re.UNICODE/re.U/(?u)标志也是一种好的做法,但它只影响字符类别名,如\w或\b,此模式不使用任何别名,因此不会受到影响。
https://stackoverflow.com/questions/393843
复制相似问题