Python:如何转义“%s”

时间:2014-10-15 23:37:15

标签: python string formatting

我试图创建一个包含"%s"的字符串。没有格式化

例如,我想要这个:

#I want to make mystring = "x %s"

first_value = "x"
mystring = "%s %s" % first_value

所以,我想格式化第一个%s,但是将第二个%s保留在字符串中。当然上面的代码给了我一个" TypeError:没有足够的参数用于格式字符串"

有没有办法在一行中实现这一目标?

由于


修改 我知道我可以做到

mystring = "%s %s" % (first_value, "%s")

但这种看起来很难看..有更好的方法吗?

5 个答案:

答案 0 :(得分:3)

您可以像这样分配字符串:

mystring = "{} %s".format(first_value)

如果您使用的是Python 2.6或更早版本,则需要在花括号中添加整数索引:

mystring = "{0} %s".format(first_value)

这种方法的一个好处是first_value可以在以后更改类型,而您不必调整mystring的定义,因为.format()可以采用不同的类型,并且您不需要first_value的类型来匹配格式字符串。

我认为它看起来比逃避百分号更清晰,但我知道这是非常主观的。

答案 1 :(得分:2)

您可以通过将格式字符串加倍来转义格式字符串中的%字符:

>>> "%s %%s" % "x"
"x %s"

答案 2 :(得分:0)

尝试连接:

mystring = ("%s " % first_value) + "%s"

输出x %s

答案 3 :(得分:0)

使用%s预先加%以逃避它:

mystring = "%s %%s" % first_value
'x %s'

答案 4 :(得分:0)

你可以逃脱第一个'%'引导它的第二个:

 print "%%s%s" % 'hello world'
  

%shello world