我有一个字符串说:
s = 'deviceId={servicename.DeviceID}&deviceGroupID={servicename.GroupID}&abcd=dkef'
我可以通过解析括号中的项目的几个XML来获取数据。在获得数据后,我使用dictset的组合器(大致)为parantheses {}中的项目产生这些结果:
['ApplC3LDJXGEDCP7', '10']
['ApplC3LDJXGEDCP7', '11']
['ApplC3LDJXGEDCP7', '12']
['ApplC3LDJXGEDCP7', '13']
['androidc1596699510', '14']
Dictset组合返回项目列表[deviceId,groupID]。考虑到我是Python的新手,如何迭代此列表并查找/替换字符串中的项?请帮忙!
让我也添加到目前为止我尝试过的内容 - 我可以使用For迭代列表并使用re.sub替换列表中的1项。但是,代码需要同时替换两个项目。我使用的正则表达式是 r“{。+?}”
答案 0 :(得分: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
,这将容忍参数重新排序,缺少参数等。