преобразование строки в параметр для запроса GET в python - PullRequest
0 голосов
/ 22 января 2019

Я вызываю GET API для получения некоторых данных.Для получения вызова мне нужно преобразовать мое ключевое слово как

keyword = "mahinder singh dhoni"

в

caption%3Amahinder%2Ccaption%3Asingh%2Ccaption%3Adhoni

Я новичок в Python и не знаю, как это сделать.Я делаю так

caption_heading = "caption%3A"
caption_tail = "%2Ccaption%3A"

keyword = "mahinder singh dhoni"
x = keyword.split(" ")
new_caption_keyword = []
new_caption_keyword.append(caption_heading)
for data in x:
    new_caption_keyword.append(data)
    new_caption_keyword.append(caption_tail)

search_query = ''.join(new_caption_keyword)
search_query = search_query[:-13]

print("new transformed keyword", search_query)

Есть ли лучший способ сделать это. Я имею в виду, что это жесткое кодирование.Спасибо

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Лучше всего превратить нашу исходную строку в список:

>>> keyword = "mahinder singh dhoni"
>>> keyword.split()
['mahinder', 'singh', 'dhoni']

Тогда ваша фактическая строка будет выглядеть как caption:...,caption:...,caption:..., что можно сделать с помощью объединения и формата:

>>> # if you're < python3.6, use 'caption:{}'.format(part)`
>>> [f'caption:{part}' for part in keyword.split()]
['caption:mahinder', 'caption:singh', 'caption:dhoni']
>>> ','.join([f'caption:{part}' for part in keyword.split()])
'caption:mahinder,caption:singh,caption:dhoni'

И, наконец, вы будете urlencode, используя urllib.parse:

>>> import urllib.parse
>>> urllib.parse.quote(','.join([f'caption:{part}' for part in keyword.split()]))
'caption%3Amahinder%2Ccaption%3Asingh%2Ccaption%3Adhoni'
0 голосов
/ 22 января 2019

так попробуй так, вместо разделения вы можете заменить "" пустое пространство на "%2Ccaption%3A" и начать строку с "caption%3A"

для 2.x:

>>> from urllib import quote
>>> keyword = "mahinder singh dhoni"
>>> quote(','.join(['caption:%s'%i for i in keyword.split()]))

для 3.x:

>>> from urllib.parse import quote
>>> keyword = "mahinder singh dhoni"
>>> quote(','.join(['caption:%s'%i for i in keyword.split()]))
...