Как изменить значение в параметре в python из parse_qsl?

#python

#python

Вопрос:

Мне нужно добавить four к параметру q и разобрать строку запроса после внесения изменений. Проблема, с которой я сталкиваюсь, в том, что parse_qsl выдает кортежи в списке, поэтому я не могу изменить кортеж. Я не могу использовать parse_qs, потому что у меня есть несколько параметров с одинаковым именем. Как мне изменить параметр q и разобрать запрос в этом сценарии?

 from urllib import parse
url = 'https://www.test.com/search?q=one two threeamp;array[]=appleamp;array[]=oranges'
parts = parse.urlparse(url)
querys = parse.parse_qsl(parts.query)

# >>> querys
# [('q', 'one two three'), ('array[]', 'apple'), ('array[]', 'oranges')]
  

Ответ №1:

Я не уверен, что правильно понял ваш вопрос, это то, чего вы хотите?

 from urllib import parse

url = 'https://www.test.com/search?q=one two threeamp;array[]=appleamp;array[]=oranges'
parts = parse.urlparse(url)
querys = [list(q) for q in parse.parse_qsl(parts.query)]

for q in querys:
    if q[0] == 'q':
        q[1] = q[1]   ' four'

print([tuple(q) for q in querys])
#[('q', 'one two three four'), ('array[]', 'apple'), ('array[]', 'oranges')]