Python中的字符串插值

1 投票
4 回答
2540 浏览
提问于 2025-04-17 02:07

我正在尝试正确地处理这个字符串:

/test/test?Monetization%20Source=%d&Channel%20Id=%d' % (mid, cid)

我希望 %20 能够原样显示,而 %d 则用来作为变量 mid 和 cid 的占位符。我该怎么做呢?

4 个回答

1

从Python 2.6开始,你可以使用一种叫做格式说明小语言的东西,这比以前的%操作符强大多了(虽然旧的%操作符仍然可以用)。

>>> mid=4
>>> cid=6
>>> "/test/test?Monetization%20Source={0:d}&Channel%20Id={1:d}".format(mid, cid) 
'/test/test?Monetization%20Source=4&Channel%20Id=6'

如果你不写:d,整数会默认使用str()来处理。

从Python 2.7和3.2开始,你可以省略参数的索引:

>>> "...ce={:d}&Channel%20Id={:d}"...

不过建议查看一下手册,format()方法和内置函数非常灵活且实用。

2

我猜这是一个常量字符串字面量,对吧?如果是这样的话,那就简单了——只需要把你想保留的百分号加倍就可以了。

'/test/test?Monetization%%20Source=%d&Channel%%20Id=%d' % (mid, cid)
10

一般来说,你会想要使用 urllib.urlencode 这个工具:

import urllib
url = '/test/test?' + urllib.urlencode({
  'Monetization Source': mid,
  'Channel Id': cid,
})

撰写回答