2013-05-16 43 views
0

我有可能有括號混合的.csv文件:蟒蛇正則表達式應用re.sub錯誤

line = "fdf,dfdf,(1,2,3,4,5),(ss,dd)," 

現在我要全部更換爲()用「」,這樣它看起來像這樣:

line = 'fdf,dfdf,"1,2,3,4,5","ss,dd",' 

我的代碼是:

line=re.sub(',(', ',"', line) 
line=re.sub('),', '",', line) 

但是我得到這個錯誤:

... 
File "/usr/local/Python-2.7/lib/python2.7/re.py", line 151, in sub 
    return _compile(pattern, flags).sub(repl, string, count) 
    File "/usr/local/Python-2.7/lib/python2.7/re.py", line 242, in _compile 
    raise error, v # invalid expression 
sre_constants.error: unbalanced parenthesis 

這裏有什麼問題?

回答

2

(在正則表達式中有特殊含義,您可以使用\(將它們轉義或使用方括號[]括號。

>>> import re 
>>> strs = "fdf,dfdf,(1,2,3,4,5),(ss,dd)," 
>>> re.sub(r"[()]",'"',strs) 
'fdf,dfdf,"1,2,3,4,5","ss,dd",' 
#or 
>>> re.sub(r"\(|\)",'"',strs) 
'fdf,dfdf,"1,2,3,4,5","ss,dd",' 
+0

@ravoori謝謝,錯過了那部分。 –

+0

+ +1向他展示如何使用正則表達式,因爲這是他真正要求的... –

4

如何回合只是簡單的字符串替換

print strs.replace("(",'"').replace(")",'"') 

不需要正則表達式這個

Some people, when confronted with a problem, think 「I know, I'll use regular expressions.」 Now they have two problems.

+0

對於'str.replace' +1。 –

0

另一個是考慮這個..

import re 
re.sub('\)', '\"', re.sub('\(', '\"', line)) 

什麼你做的是一次取代一個幽靈然後替換另一個。