Как перебрать список по re.sub и заменить переменные в строке, используя python? - PullRequest
4 голосов
/ 17 августа 2011

У меня есть строка:

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 и иметь возможность заменить 1 элемент из списка с помощью re.sub.Однако в коде необходимо заменить оба элемента одновременно.Регулярное выражение, которое я использую, это r "{. +?}"

1 Ответ

3 голосов
/ 17 августа 2011

Используйте один вызов 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, которое будет допускать переупорядочение параметров, пропущенные параметры и т. Д.

...