python正则表达式re.sub错误

时间:2013-05-16 18:28:11

标签: python regex

我有一个.csv文件可能包含括号:

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

这里有什么问题?!!

3 个答案:

答案 0 :(得分:4)

如何简单的字符串替换

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

不需要正则表达式

  

有些人在遇到问题时会想“我知道,我会用   正则表达式。“现在他们有两个问题。

答案 1 :(得分: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",'

答案 2 :(得分:0)

另一个人会考虑这个..

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

你要做的就是更换一个pran然后更换另一个pran。