我正在调用GET API来检索一些数据。要拨打电话,我需要将关键字隐蔽为
keyword = "mahinder singh dhoni"
进入
caption%3Amahinder%2Ccaption%3Asingh%2Ccaption%3Adhoni
我是python新手,不了解pythonic方式。我就是这样
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)
有没有更好的方法可以做到这一点呢?这意味着这是一种硬编码。 谢谢
答案 0 :(得分:2)
最好将我们的原始字符串转换为列表:
>>> 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'
最后,您将使用urllib.parse
进行urlencode:
>>> import urllib.parse
>>> urllib.parse.quote(','.join([f'caption:{part}' for part in keyword.split()]))
'caption%3Amahinder%2Ccaption%3Asingh%2Ccaption%3Adhoni'
答案 1 :(得分:1)
所以尝试这种方式,
您可以使用"%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()]))