2016-01-31 50 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