假设我有这个路径(字符串类型)
/user/{id}/list/{id}
我想搜索“id”以及每次完全匹配,我想用前一个路径+'_id'替换id。因此,在上面的示例中,所描述的过程将导致
/user/{user_id}/list/{list_id}
我怎么能在python中做到这一点?
编辑:我还想将新的id名称存储在变量中,所以我猜测操作不应该就位。
Edit2:路径中可能有无限数量的{id}次出现
答案 0 :(得分:3)
在替换字符串中使用捕获组和对此捕获的引用:
re.sub(r'([^/]+)/{id}', r'\1/{\1_id}', s)
如果您想将替换项存储在列表中,您可以这样做:
(python 2.7)
def rep(m):
ids.append('%s_id'%m.group(1))
return '%(g1)s/{%(g1)s_id}'%{'g1':m.group(1)}
ids=[]
re.sub(r'([^/]+)/{id}', rep, s)
(python 3.x)
def rep(m):
ids.append('{}_id'.format(m.group(1)))
return '{0}/{{{0}_id}}'.format(m.group(1))