如何将列表元素中的所有单词作为变量

2024-06-01 09:46:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下程序,在其中我尝试将元素列表传递给连续的Google搜索:

search_terms = ['Telejob (ETH)', 'Luisa da Silva','The CERN Recruitment Services']
for el in search_terms:
    webpage = 'http://google.com/search?q='+el)
    print('xxxxxxxxxxxxxxxxxxx')
    print(webpage)

不幸的是,我的程序并没有获取每个列表项中的所有单词,而是只获取第一个单词,从而得到以下输出:

http://google.com/search?q=Telejob (ETH)
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=Luisa da Silva
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=The CERN Recruitment Services
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=The Swiss National Science Foundation

尽管您可以看到整个项目的每个单词都被添加到上面的搜索中,但当我验证链接时,它将作为元素仅连接每个项目的第一个单词,如下所示:

http://google.com/search?q=Telejob
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=Luisa
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=The
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=The

我做错了什么?将每个列表项中的所有单词连接到google搜索的解决方案是什么?你知道吗

谢谢


Tags: the程序comhttp元素列表searchgoogle
3条回答

可以在python3中使用urllib.parse.urlencode。对于python2,可以使用urllib.urlencode。你知道吗

import urllib

search_terms = ['Telejob (ETH)', 'Luisa da Silva','The CERN Recruitment Services']
for el in search_terms:
    query = urllib.parse.urlencode({'q': el})  # urllib.urlencode({'q': el})
    webpage = 'http://google.com/search?{}'.format(query)
    print('xxxxxxxxxxxxxxxxxxx')
    print(webpage)

这些答案都不能解决基本问题:您需要将整个字符串编码为url。你知道吗

我选择了^{}

>>> import urllib
>>> for term in search_terms:
    print urllib.quote(term)
Telejob%20%28ETH%29
Luisa%20da%20Silva
The%20CERN%20Recruitment%20Services

注意()也被编码了,其他可能会阻塞查询的奇怪字符也被编码了。你知道吗

在你的情况下,应该是:

webpage = 'http://google.com/search?q=' + urllib.quote(el))

Py3中的等效值:

from urllib import parse
for term in search_terms:
    print(parse.quote(term))

所以呢

webpage = 'http://google.com/search?q=' + parse.quote(el))

这条线:

webpage = 'http://google.com/search?q='+el)

应使用%20连接件拆分和连接:

webpage = 'http://google.com/search?q='+'%20'.join(el.split()))

相关问题 更多 >