Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表元素中的所有单词作为变量_Python_String_List - Fatal编程技术网

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

Python 如何将列表元素中的所有单词作为变量,python,string,list,Python,String,List,我有以下程序,在其中我试图将元素列表传递给连续的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) 不幸的是,我的程

我有以下程序,在其中我试图将元素列表传递给连续的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
我做错了什么?将每个列表项中的所有单词连接到谷歌搜索的解决方案是什么


谢谢

我相信您的问题在于url编码

允许在“%20”放置的URL中使用空格

尝试将链接更改为

这一行:

webpage = 'http://google.com/search?q='+el)
应使用%20细木工进行拆分和连接:

webpage = 'http://google.com/search?q='+'%20'.join(el.split()))
您可以在python3中使用。对于python2,您可以使用


这两个答案都不能解决基本问题:您需要将整个字符串编码为url

我选择了:

请注意,
()
也会被编码,其他可能妨碍查询的奇怪字符也会被编码

在您的情况下,它将是:

webpage = 'http://google.com/search?q=' + urllib.quote(el))
Py3中的等效值:

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


问题是URL需要进行百分比编码,URL中有一些具有特殊含义的字符,例如:

  • #
    :转到页面中的某个位置
  • /
    :我想你知道这个是干什么的
您应该使用
quote()
来解决这个问题,只需记住:

  • urllib.quote()
    用于Python2
  • url.parse.quote()
    用于Python3
以下是Python3的一些示例:

来自urllib.parse导入引号
引号(“/bar/will/stay/impact”)
#“/bar/将/保留/完整”
引号('/bar/wont/stay/untain',safe='')
#“%2Fbars%2不会保持%2Fbars%2Fbars完整”#实际上,所有内容都将在此处进行编码
引用(“()ñ´ç”)
#“%28%29%C3%B1%C2%B4%20%C3%A7”
因此,您现在的代码是:

search_terms = ['Telejob (ETH)', 'Luisa da Silva','The CERN Recruitment Services']
for el in search_terms:
    webpage = 'http://google.com/search?q='+quote(el)
    print('xxxxxxxxxxxxxxxxxxx')
    print(webpage)
由于
search\u terms
可能包含
quote('something')
无法转义的其他字符,因此必须使用其安全参数:

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

xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=Telejob%20%28ETH%29
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=Luisa%20da%20Silva
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=The%20CERN%20Recruitment%20Services

我建议您查看:有关更多信息(请参阅?a
#
字符!)

谷歌查询的格式为,因此您应该将查询的格式如下:

search_terms = ["Telejob (ETH)", "Luisa da Silva","The CERN Recruitment Services"]
for search_term in search_terms:
    query = "+".join(search_term.split())
    url = "http://google.com/search?q=" + query

看见不同的语言,相同的问题,相同的解决方案。回溯(最后一次调用):文件“C:/Users/SK/PycharmProjects/untitled/other_temperase.py”,第13行,打印(urllib.quote(el))AttributeError:module'urllib'没有Py3的属性'quote'@skitel,您需要
从urllib导入parse
并使用
parse.quote()
代替或使用,如Evans Murithiexplained@skeitel问题是,在Python3中,它不是
urllib.quote()
,而是
url.parse.urlencode()
,尽管
urllib.parse.quote()
仍然可以在Py3中工作。。。我的意思是
urllib.parse.quote()
,我很困惑我是新来的。在上面Evans Murithi的urllib上使用此方法的缺点是什么?我的解决方案专门处理空间。它的覆盖范围比URL库解决方案小,但不需要导入。。。我只是直接回答这个问题,没有更多的背景。。。根据询问者的需要,任何一个答案都可能是正确的。我是新来的。与下面JacobIRR描述的联合方法相比,使用这种方法有什么好处?假设字符串中有特殊字符
ñ!
,使用串联
+
将不会对其进行编码
urllib
将其编码为
q=%C3%B1%C2%B4%C3%A7
search_terms = ['Telejob (ETH)', 'Luisa da Silva','The CERN Recruitment Services']
for el in search_terms:
    webpage = 'http://google.com/search?q='+quote(el, safe='')
    print('xxxxxxxxxxxxxxxxxxx')
    print(webpage)
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=Telejob%20%28ETH%29
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=Luisa%20da%20Silva
xxxxxxxxxxxxxxxxxxx
http://google.com/search?q=The%20CERN%20Recruitment%20Services
search_terms = ["Telejob (ETH)", "Luisa da Silva","The CERN Recruitment Services"]
for search_term in search_terms:
    query = "+".join(search_term.split())
    url = "http://google.com/search?q=" + query