假设我有以下字符串:
s = """hi my name is 'Ryan' and I like to 'program' in "Python" the best"""
我想运行re.sub
,将以下字符串更改为:
"""hi my name is '{0}' and I like to '{1}' in "{2}" the best"""
这会让我保存内容,但会引用它,以便我可以重新添加原始内容。
注意:我使用以下代码来获取引号中的所有项目,因此我将遍历此项以引用数字
items = re.findall(r'([\'"])(.*?)\1',s)
那么我该如何制作它以便sub能够识别数字实例,以便我可以创建这种参考?
答案 0 :(得分:4)
使用re.sub
进行回调:
>>> import itertools
>>> import re
>>> s = """hi my name is 'Ryan' and I like to 'program' in "Python" the best"""
>>> c = itertools.count(1)
>>> replaced = re.sub(r'([\'"])(.*?)\1', lambda m: '{0}{>>> it = itertools.count(1)
>>> next(it)
1
>>> next(it)
2
>>> next(it)
3
}{0}'.format(m.group(1), next(c)), s)
>>> print(replaced)
hi my name is '{1}' and I like to '{2}' in "{3}" the best
使用itertools.count
生成数字:
{{1}}