1

我正在用 Python 做一些事情,我需要从 URL 中的空格 %20 中转义。例如:

"%20space%20in%20%d--" % ordnum

所以我需要使用 %20 作为 URL,然后使用 %d 作为数字。但我得到这个错误:

TypeError: not enough arguments for format string

我知道问题出在哪里,我只是不知道如何摆脱 %20 并修复它。

4

4 回答 4

6

一种方法是将%字符加倍:

"%%20space%%20in%%20%d--" % ordnum

但可能更好的方法是使用urllib.quote_plus()

urllib.quote_plus(" space in %d--" % ordnum)
于 2011-02-07T21:49:44.430 回答
4

当 Python 的格式化程序看到 %20 时,它应该看起来像 %%20。对于 Python,%% 格式化为 %。

于 2011-02-07T21:50:03.710 回答
1
>>> import urllib
>>> unquoted = urllib.unquote("%20space%20in%20%d--")
>>> ordnum = 15
>>> print unquoted % ordnum
 space in 15--
于 2011-02-07T21:52:30.710 回答
0

我看到了解决这个问题的三种方法:

  1. 转义%

    "%%%20dogs" % 11
    
  2. 使用新的.format语法。

    "{}%20dogs".format(11)
    
  3. 使用 + 符号而不是%20,因为我认为这也是可能的。

    "%+dogs" % 11
    
于 2011-02-07T21:55:32.800 回答