小编典典

Python和带Unicode的正则表达式

python

我需要从字符串“ بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ”中删除一些Unicode符号

我知道他们肯定在这里。我试过了:

re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')

但这不起作用。字符串保持不变。我究竟做错了什么?


阅读 210

收藏
2020-12-20

共1个答案

小编典典

您使用的是python 2.x还是3.0?

如果您使用的是2.x,请尝试使用“ u”使正则表达式字符串成为unicode-escape字符串。由于它是正则表达式,因此最好使用“
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这样的字符类别名,而该模式不使用任何别名,因此不会受到影响。

2020-12-20