[英]Python string percent sign escape
我正在尝试一些字符串输出,我遇到了一些在打印时抛出错误的东西
x = "ll=%s%2C%20%s" % ("lat", "lng")
上面的语法抛出一个错误:
ValueError: unsupported format character 'C' (0x43) at index 7
我在这里错过了什么? 我希望得到一个结果:
ll=lat%2C%20lang
使用%s运算符连接字符串中的变量
当python看到%
,它正在期待一个格式化符号。 基本上,它期望像%s
或%d
...但它找到一个C
,它不知道该怎么做。
您可以在此链接中看到%
后面的内容。
如果你想在你的字符串中有字面上%
,你必须用另一个%
来逃避它:
>>> 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'
要在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。
有关python string的格式方法的官方文档,请参阅此处的更多详细信息
除了%逃脱。 您也可以在传递之前在'lat'中添加'%',或者只为'%'添加另一个'%s'
>>> x = "ll=%s2C%s20%s" % ("lat%", "%","lng")
>>> x
'll=lat%2C%20lng'
我只是给你另一个选择。但%%逃脱是最好的选择
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.