Python字符串百分号转义

Dea*_*ada 2 python

我正在尝试一些字符串输出,我遇到了一些在打印时抛出错误的东西

x = "ll=%s%2C%20%s" % ("lat", "lng")
Run Code Online (Sandbox Code Playgroud)

上面的语法抛出一个错误:

ValueError: unsupported format character 'C' (0x43) at index 7
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我希望得到一个结果:

ll=lat%2C%20lang
Run Code Online (Sandbox Code Playgroud)

使用%s运算符连接字符串中的变量

Bor*_*jaX 5

当python看到它时%,它正在期待一个格式化符号.基本上,它期望类似%s%d......但它找到了C,它不知道该怎么做.

您可以%此链接中看到可以放置的内容.

如果你想%在字符串中使用字符串,则必须使用另一个字符串将其转义%:

>>> x = "ll=%s%%2C%%20%s" % ("lat", "lng")
>>> x
'll=lat%2C%20lng'
Run Code Online (Sandbox Code Playgroud)

请注意,在Python 3中,这种方式被认为是"过时的",有利于更新的.format()方法.你也可以在Python 2.7中使用它(我相信,虽然我不确定它是在Python 2.6中引入的吗?)并且像这样做:

>>> x = "ll={0}%2C%20{1}".format("lat", "lng")
>>> x
'll=lat%2C%20lng'
Run Code Online (Sandbox Code Playgroud)

或者你甚至可以做更好的事情:

>>> x = "ll={latitude}%2C%20{longitude}".format(latitude="lat", longitude="lng")
>>> x
'll=lat%2C%20lng'
Run Code Online (Sandbox Code Playgroud)

看看这个!(还有一个关于它的Reddit主题)