替换空白
我正在构建一个网址,并把所有的空格替换成 + 符号。
url.replace(' ','+')
但不知道为什么,它没有替换任何空格!
有没有人知道问题出在哪里?
3 个回答
0
旁白:
如果你要把查询或路径部分编码成URL的一部分,光是替换空格是不够的。还有很多其他字符是不能直接放进URL里的,如果你硬放进去可能会导致URL出错。这些字符需要用%nn
这种十六进制的转义序列来替换。
建议使用urllib
来处理URL编码,而不是自己用字符串的方法去搞。例如:
>>> import urllib
>>> param= 'Hello world!'
>>> url= 'http://www.example.com/script.py?a='+urllib.quote_plus(param)
>>> url
'http://www.example.com/script.py?a=Hello+world%21'
(urllib.quote_plus()
这个函数专门用来处理查询字符串中的表单参数,所以它会把空格替换成+
,而不是%20
。%20
在路径部分和查询部分都能用,所以它比+
稍微安全一点,但在视觉上看起来有点乱。)
如果你有多个参数,可以在一个字典上使用urlencode()
。这样通常比把字符串拼在一起要容易读得多:
>>> params= {'foo': 'bar', 'bof': 'Hello world!'}
>>> url= 'http://www.example.com/script.py?'+urllib.urlencode(params)
>>> url
'http://www.example.com/script.py?foo=bar&bof=Hello+world%21'
2
你可能还在看旧的网址。用替换功能可以得到一个新的字符串,里面的值已经被替换了。试试这个:
url = url.replace(' ', '+')
5
replace函数并不会直接在原来的地方替换内容,你需要把它的结果赋值给一个变量:
url = url.replace(' ','+')