re.sub如何替多个数值?

有这样一个url地址,我想用一句re.sub替换两处地方。
1,http替换为https
2,api/d7替换为work
url='http://www.jiayuan.com/api/d7...'
结果是'https://www.jiayuan.com/work/...'

自己写了个正则,实现不出来。。。。求指教

url='http://www.jiayuan.com/api/v4/admintion/54174788/'
dict={'http:':'https:','/api/d7/admintion/':'/work/'}
for key,value in dict.items():
    print(key,value)
    j=re.sub(key,value,url)
    print(j)
阅读 8.5k
3 个回答

如果只是固定字符串替换没必要用re模块,直接replace:

url='http://www.jiayuan.com/api/d7/admintion/54174788/'
dict={'http:':'https:','/api/d7/admintion/':'/work/'}
for key,value in dict.items():
    url=url.replace(key,value)

print(url)

是不是转义符的问题?把key有可能转义的字符加个反斜杠\,v4和d7也匹配不上啊。

找到原因了,没有把修改后的url地址赋值回去,重新取出的还是旧地址。我用正则改写了一下,灵活性更高了。

url='http://www.jiayuan.com/api/v4/admintion/54174788/'
dict={'h\w{2}p':'https','/api/\w/admintion/':'/work/'}
for key,value in dict.items():
    print(key,value)
    url=re.sub(r'%s'%key,value,url)
    print(url)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题