2016-01-31 106 views
-2

我需要用波蘭語字符替換字符串。使用波蘭語字符時的不兼容

我嘗試下面的代碼:

k = 'aąkkk cdkkk aą xskkk' 
odp = re.sub('(?<!aą|cd)kkk', '***', k) 
print (odp) 

但不幸的是它產生以下錯誤:因爲當我更換了與「A」字

File "/usr/lib/python2.7/re.py", line 244, in _compile raise error, v # invalid expression

問題是與潤色人物 'a'char它工作正常:

k = 'aąkkk cdkkk aą xskkk' 
odp = re.sub('(?<!aa|cd)kkk', '***', k) 
print (odp) 

答案是:aą*** cdkkk aą xs***

我嘗試使用UNICODE,但它仍然不能正常工作:

a = re.compile(ur'(?<!\u0061\u0105|\u0063\u0064)kkk', re.UNICODE) 
a 
k = u'aąkkk cdkkk aą xskkk' 
odp = a.sub('***', k) 
print (odp) 

答案上面是:aÄ*** cdkkk aÄ xs***

我怎樣才能解決這個問題?

+1

你是否在腳本的開頭設置了'coding:'?結果看起來像您需要在您的終端中啓用UTF-8支持。 – tripleee

回答

1

這並不是真的很清楚你想要結果是什麼。如果你想要'aą*** cdkkk aą xs***',那麼你可以這樣做:

>>> k = u'aąkkk cdkkk aą xskkk' 
>>> re.sub(u'(?<!(aą|cd))kkk', '***', k, re.UNICODE) 
'aąkkk cdkkk aą xs***' 
+0

不,我要全部更換子 '三K黨',而不是始於AA和CD,所以它應該是: 「aąkkkcdkkk AA XS *** 或者 K =u'aąkkkKKK cdkkk AA xskkk' 原因應該是: 'akhkkk *** cdkkkaąxs ***' – qwertymz

+0

@qwertymz好的,我編輯了我的答案。那是你要的嗎? – Oin

+0

這是奇怪的情況。現在我看到我的代碼不想在WingIde應用程序中編譯,但在Python shell中它可以工作。 比你的幫助,因爲當你告訴我你的代碼工作,但它不是在WingIde工作,然後我試圖在python shell中,它的工作:)再次感謝 – qwertymz