ValueError:格式字符不支持,构造字符串时出错

51 投票
6 回答
158975 浏览
提问于 2025-04-17 10:12

这个可以正常工作:

print "Hello World%s" %"!"

但是这个不行

print "Hello%20World%s" %"!"

错误信息是 ValueError: unsupported format character 'W' (0x57) at index 8

我正在使用 Python 2.7。

我为什么要这样做呢?因为 %20 在网址中用来代替空格,如果我使用它,就无法用 printf 格式来构建字符串。但为什么 Python 会这样呢?

6 个回答

8

你可能写错字了。在我的情况下,我本来想写的是 %s,却写成了 %w。

17

你可以用另一个%来转义%符号,所以可以写成%%20

这是一个相关的问题 当字符串包含"%s"但没有转义时的Python字符串格式化

80

你可以这样处理%符号,以避免它和%20混淆:

print "Hello%%20World%s" %"!"

或者你也可以试试使用字符串格式化的方法,像这样:

print "Hello%20World{0}".format("!")

http://docs.python.org/library/string.html#formatstrings

撰写回答