正則表達式我需要從字符串刪除一些Unicode的符號「بسماللهالرحمنالرحيم」Python和使用Unicode
我知道他們存在這裏肯定。我試過了:
re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')
但它不起作用。字符串保持不變。我究竟做錯了什麼?
正則表達式我需要從字符串刪除一些Unicode的符號「بسماللهالرحمنالرحيم」Python和使用Unicode
我知道他們存在這裏肯定。我試過了:
re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')
但它不起作用。字符串保持不變。我究竟做錯了什麼?
你使用的是Python 2.x還是3.0?
如果您使用的是2.x,請嘗試使用「u」將正則表達式字符串設置爲unicode轉義字符串。由於它是正則表達式,所以將正則表達式字符串設爲原始字符串是'好'的做法。另外,將整個模式放在括號中是多餘的。
re.sub(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', '', ...)
http://docs.python.org/tutorial/introduction.html#unicode-strings
編輯:
這也是使用re.UNICODE/re.U/Unicode的正則表達式標誌很好的做法,但它不僅影響性格類別名狀(U?) \ 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
بسم الله الرحمن الرحيم
這篇文章太棒了 – Fluffy 2009-11-08 15:48:36
嗯,閱讀文章不知道,你可以串連兩個``u``和``r``前綴。這很酷! – 2013-03-12 09:16:03