2017-02-25 110 views
2

假设我有这样的路径(字符串类型)Python的匹配字符串路径,并与前路项替换

/user/{id}/list/{id} 

我想搜索“ID”和每个确切的比赛,我想用前面的路径+'_id'替换id。所以在上面的例子中,所描述的过程将导致到

/user/{user_id}/list/{list_id} 

我该如何在python中做到这一点?

编辑:我也想存储在变量新的ID名称,所以我想操作不应该在的地方。

EDIT2:有可能在路径

+0

可以显示真实的例子吗? – RomanPerekhrest

+0

@RomanPerekhrest你是什么意思,其实这是我的情况 – Crone

+0

*存储在变量的新ID名称一个确切的例子* - 将在那里只有2 * ID名称*(如您的网址)或它们的数量是动态的? – RomanPerekhrest

回答

3

使用捕获组和替换字符串中的这个捕捉参考{ID}发生的不定数:

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) 

(蟒蛇3.X)

def rep(m): 
    ids.append('{}_id'.format(m.group(1))) 
    return '{0}/{{{0}_id}}'.format(m.group(1))