Python中的字符串插值
我正在尝试正确地处理这个字符串:
/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,
})