我正在尝试一些字符串输出,我遇到了一些在打印时抛出错误的内容
x = "ll=%s%2C%20%s" % ("lat", "lng")
上面的语法会引发错误:
ValueError: unsupported format character 'C' (0x43) at index 7
我在这里缺少什么?我希望得到一个结果:
ll=lat%2C%20lang
使用%s运算符连接字符串
中的变量答案 0 :(得分:5)
当python看到%
时,它会在之后期待格式化符号。基本上,它需要类似%s
或%d
的内容......但它找到了C
,并且它不知道如何处理它。
您可以在this link中的%
之后看到可以放置的内容。
如果您希望在字符串中使用字面%
,则必须使用另一个%
转义:
>>> x = "ll=%s%%2C%%20%s" % ("lat", "lng")
>>> x
'll=lat%2C%20lng'
请注意,在Python 3中,这种方式被认为是"过时的"支持更新的.format()
方法。你也可以在Python 2.7中使用那个(我相信,虽然我不确定它是在Python 2.6中引入的吗?)并且这样做也是这样的:
>>> x = "ll={0}%2C%20{1}".format("lat", "lng")
>>> x
'll=lat%2C%20lng'
或者你甚至可以做更好的事情:
>>> x = "ll={latitude}%2C%20{longitude}".format(latitude="lat", longitude="lng")
>>> x
'll=lat%2C%20lng'
Check it out!(还有,Reddit thread关于它)
答案 1 :(得分:2)
答案 2 :(得分:2)
要在python中转义%
,只需使用%%
,在您的示例中,以下内容将提供您想要的结果,
x = "ll=%s%%2C%%20%s" % ("lat", "lng")
或者你可以使用字符串的格式方法,它在python 3中是首选,也可以在python 2.7中使用
x = "ll={0:s}%2C%20{1:s}".format("lat", "lng")
您可以从%
样式格式转换为字符串格式方法,AFAIK,所有%
格式字母与字符串的格式方法相同。这意味着"%s" % "lat"
只会变为"{0:s}".format("lat")
,"%d" % 3
变为"{0:d}".format(3)
等等。请注意此处的0
。它指示format
方法中的哪个参数已格式化,第一个参数索引为0。
答案 3 :(得分:1)
除了%逃脱。你也可以添加'%'在' lat'在通过它之前 或者只是添加另一个'%s'对于'%'
>>> x = "ll=%s2C%s20%s" % ("lat%", "%","lng")
>>> x
'll=lat%2C%20lng'
我只是给你另一个选项。但%% escape是最好的选择