3

假设我有以下字符串:

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)

那么我怎样才能做到这样子才能识别数字实例,以便我可以创建这种引用呢?

4

1 回答 1

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}{{{1}}}{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生成数字:

>>> it = itertools.count(1)
>>> next(it)
1
>>> next(it)
2
>>> next(it)
3
于 2013-09-11T16:04:01.920 回答