替换空白

1 投票
3 回答
1325 浏览
提问于 2025-04-16 02:19

我正在构建一个网址,并把所有的空格替换成 + 符号。

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(' ','+')

撰写回答