如何在Python中遍历列表,通过re.sub替换字符串中的变量?
我有一个字符串,比如:
s = 'deviceId={servicename.DeviceID}&deviceGroupID={servicename.GroupID}&abcd=dkef'
我可以通过解析几个XML文件来获取括号里的数据。获取到数据后,我使用dictset的组合功能大致得到了这些结果(针对大括号里的项目):
['ApplC3LDJXGEDCP7', '10']
['ApplC3LDJXGEDCP7', '11']
['ApplC3LDJXGEDCP7', '12']
['ApplC3LDJXGEDCP7', '13']
['androidc1596699510', '14']
Dictset组合返回一个包含[deviceId, groupID]的列表。考虑到我还是Python的新手,我该如何遍历这个列表并在字符串中找到并替换这些项目呢?请帮帮我!
我还想补充一下我到目前为止尝试过的——我可以使用for循环遍历这个列表,并且能够用re.sub替换列表中的一个项目。不过代码需要同时替换两个项目。我使用的正则表达式是 r"{.+?}"
1 个回答
3
使用一个单独的 sub
调用,并传入一个函数,这个函数会返回你需要的内容。
s = 'deviceId={servicename.DeviceID}&deviceGroupID={servicename.GroupID}&abcd=dkef'
r = ['ApplC3LDJXGEDCP7', '10']
print(re.sub(r'{.+?}', lambda match: r.pop(0), s, count=len(r)))
# deviceId=ApplC3LDJXGEDCP7&deviceGroupID=10&abcd=dkef
一个更好的方法可能是使用 urllib.parse.parse_qs
,这个方法可以处理参数的顺序变化、缺少参数等情况。