我有一个包含要替换为另一个数字的数字的字符串,并保留其余字符串。
例如
原始= VAR token 3
修改= VAR token 1 // orig = 3
token
可以是任何字符串,该语句始终以VAR
开头,并且在token
及其值之间包含空格。
我正在使用此函数和正则表达式
import re
def modify(line, token, new_value):
newline = re.sub(r'(^(\s*VAR\s*%s\s+)(\d+)(.*)' % token, r'\1%s // orig = \2\3' % new_value, line)
print(newline)
使用
运行此代码时收到错误modify("VAR T 3", "T", "1")
Traceback (most recent call last):
File "/usr/local/python/3.4.3_wTclTk/lib/python3.4/sre_parse.py", line 866, in expand_template
literals[index] = s = g(group)
IndexError: no such group
<Stack Trace>
sre_constants.error: invalid group reference
我认为这是因为替换字符串实际上变为r'\11 // orig = \2\3'
,并且没有组11
。
如何在替换字符串中与组标识符分开定义文字数字?
答案 0 :(得分:0)
这是一种方法。
例如:
import re
def modify(line, token, new_value):
newline = re.sub(r'^(VAR\s*)({}\s*)(\s+)(\d+)'.format(token), r'\1\2 {} // orig = \4'.format(new_value), line)
print(newline)
modify("VAR T 3", "T", "1")
输出:
VAR T 1 // orig = 3