p = r'([\,|\.]\d{1}$)'
re.sub(p, r"\1", v)
有效,但我想在捕获组中添加零,而不是用捕获组'10'替换,我该怎么做?
re.sub(p, r"\10", v)
失败:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 275, in filter
return sre_parse.expand_template(template, match)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_parse.py", line 802, in expand_template
raise error, "invalid group reference"
sre_constants.error: invalid group reference
答案 0 :(得分:5)
只需将组引用包装在'\ g&lt;#&gt;'中:
import re
pattern = r'([\,|\.]\d{1}$)'
string = 'Some string .1\n'
rep = r'\g<1>0'
re.sub(pattern, rep, string)
> 'Some string .10\n'
答案 1 :(得分:1)
使用名为的捕获组:
p = r'(?P<var>[\,|\.]\d{1})$'
re.sub(p, r"\g<var>0", v)
e.g。
>>> p = r'(?P<var>[\,|\.]\d{1})$'
>>> v = '235,5'
>>> re.sub(p, r"\g<var>0", v)
'235,50'
答案 2 :(得分:0)
最简单的方法(可能也是唯一的方法,我实际上并不确定)是命名捕获组,然后按名称引用它:
>>> re.sub(p, r'\10', '1.2')
Traceback (most recent call last):
...
sre_constants.error: invalid group reference
>>> p = r'(?P<frac>[\,|\.]\d{1}$)'
>>> re.sub(p, r'\g<frac>0', '1.2')
'1.20'
选择一些名字比“frac”更好(我把它拉出来......呃,耳朵,是的,让我们选择“耳朵”:-))。
克里斯