如何在Python中遍历列表,通过re.sub替换字符串中的变量?

4 投票
1 回答
3249 浏览
提问于 2025-04-16 23:45

我有一个字符串,比如:

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,这个方法可以处理参数的顺序变化、缺少参数等情况。

撰写回答