我很新的python,所以我有一個字典中有一些鍵和字符串。如果在字典中找到字典中存在的模式,我必須替換字符串。字典和字符串都非常大。我正在使用正則表達式來查找模式。Python正則表達式錯誤:不平衡括號
這一切都正常工作,直到這樣的關鍵彈出「 - (」或本「( - )」。在這種情況下,蟒蛇給出了不平衡的括號內的錯誤
這裏是如何的代碼我寫的外觀:
somedict={'-(':'value1','(-)':'value2'}
somedata='this is some data containing -(and (-)'
for key in somedict.iterkeys():
somedata=re.sub(key, 'newvalue', somedata)
下面是我在控制檯中得到了錯誤
Traceback (most recent call last):
File "<console>", line 2, in <module>
File "C:\Python27\lib\re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "C:\Python27\lib\re.py", line 244, in _compile
raise error, v # invalid expression
error: unbalanced parenthesis
我也嘗試使用正則表達式編譯器將其許多方面並搜查了很多,但沒有發現什麼解決問題。任何幫助表示讚賞。
非常感謝Martijn,它確實有效。然而,它也取代了子字符串,如果someData =' - ( - ('轉換爲'newvaluenewvalue'我怎麼能避免它。我只希望它被替換時,整個字符串匹配。即somedata應該保持不變,如果它不' 「 – 2013-04-11 11:24:41
然後只是測試平等嗎?'如果somedata == key:somedata ='newvalue''也做你剛剛描述的。 – 2013-04-11 11:28:04
如果'somedata ='這是somedata''並且關鍵是'is '這似乎並沒有在那裏工作'somedata.replace'也取代了子串,所以它似乎也不工作 – 2013-04-11 11:41:46