在使用Regex的python中,如何在带有右括号字符的字符串后面插入字符串?

2024-10-03 21:34:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的数据行:

(ABCD:0.00825830327156463345,(LKSDJF:0.00000254996576400768,SDFADS:0.00917039554517301569):0.16367666117488463562,OIUO:0.00401845774067355072):0.0;
((OIUO:0.00298782818816040099,SDFADS:0.00148583412998809050):0.27857371651571366522,ABCD:0.00188545323182991121,LKSDJF:0.00799482946501124843):0.0;

我正在尝试使用regex在每个“:randomfloatingpoint\u number”后面插入一个字符串。有时数字后面是逗号,有时是分号。你知道吗

这是我写的代码:

        line = re.sub(r"):[0-9\.])",r"\1 " + string, line)

但是我得到一个错误信息,括号是不平衡的:

Traceback (most recent call last):
File "AssignFGbranches.py", line 31, in <module>
line = re.sub(r"):[0-9\.])",r"\1 " + string, line)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/lib/python2.7/re.py", line 242, in _compile
raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis

我做错什么了?你知道吗

谢谢!你知道吗


Tags: 数据inpyrestringlibusrline
2条回答

有两个问题。一是需要转义字面上的close paren。另一个原因是该组的开放参数丢失:

re.sub(r"(\):[0-9\.]+)",r"\1 " + string, line1)

你需要避开括号。此外,没有紧跟右大括号的数字。你可能想要这样的东西:

(\):[0-9.]+[;,])

这将符合以下条件:

554517301569 ):0.16367666117488463562,奥尤

相关问题 更多 >