【问题标题】:Python match string in path and replace with previous path itemsPython匹配路径中的字符串并替换为以前的路径项
【发布时间】:2017-07-16 16:32:50
【问题描述】:

假设我有这个路径(字符串类型)

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

我想搜索 'id' 并且对于每个 exact 匹配项,我想将 id 替换为上一个路径 + '_id'。因此,在上面的示例中,所描述的过程将导致

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

如何在 python 中做到这一点?

编辑:我也想把新的id名字存入变量中,所以估计操作应该不到位。

Edit2:路径中可能出现不定数量的 {id}

【问题讨论】:

  • 你能举出真实的例子吗?
  • @RomanPerekhrest 你什么意思,这实际上是我的情况的一个确切例子
  • 将新的 id 名称存储在变量中 - 是否只有 2 个 id 名称 (如您的 url 中)或者它们的数量是动态的?
  • @RomanPerekhrest 他们的号码是动态的
  • 显示存储新 id 名称的最终数据结构的外观

标签: python regex uri


【解决方案1】:

在替换字符串中使用捕获组和对此捕获的引用:

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))

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 2011-01-20
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2012-01-04
    相关资源
    最近更新 更多