【问题标题】:converting a string into parameter for GET request in python在python中将字符串转换为GET请求的参数
【发布时间】:2019-01-22 06:55:06
【问题描述】:

我正在调用 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)

有没有更好的方法来做到这一点。我的意思是这是一种硬编码。 谢谢

【问题讨论】:

    标签: python-3.x string url python-requests


    【解决方案1】:

    最好把我们原来的字符串变成一个列表:

    >>> 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'
    

    【讨论】:

      【解决方案2】:

      所以试试这个方法, 您可以使用 "%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()]))
      

      【讨论】:

        猜你喜欢
        • 2015-06-24
        • 1970-01-01
        • 2017-11-17
        • 2012-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-12
        相关资源
        最近更新 更多