我试图创建一个包含"%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")
但这种看起来很难看..有更好的方法吗?
答案 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