Python在包含(%)的字符串中使用(%s)?

时间:2014-01-07 16:56:09

标签: python python-2.7

我有一个包含%的字符串,我也想使用%s用变量替换该字符串的一部分。像

这样的东西
name = 'john'
string = 'hello %s! You owe 10%.' % (name)

但是当我运行它时,我得到了

not enough arguments for format string

我很确定这意味着python认为我试图在字符串中插入多于一个变量,但只包括一个。我该如何克服这个问题?谢谢!

2 个答案:

答案 0 :(得分:8)

您可以使用此语法在字符串中使用%,方法是使用另一个%转义它:

>>> name = 'John'
>>> string = 'hello %s! You owe 10%%.' % (name)
>>> string
'hello John! You owe 10%.'

更多关于:String Formatting Operations - Python 2.x documentation

<小时/> 正如@Burhan在我的帖子后添加的那样,您可以使用format语法recommended by Python 3绕过此问题:

>>> name = 'John'
>>> string = 'hello {}! You owe 10%'.format(name)
>>> string
'Hello John! You owe 10%'
# Another way, with naming for more readibility
>>> string = 'hello {name}! You owe 10%.'.format(name=name)
>>> str
'hello John! You owe 10%.'

答案 1 :(得分:0)

除了Maxime发布的内容之外,您还可以执行此操作:

>> name = 'john'
>>> str = 'Hello {}! You owe 10%'.format(name)
>>> str
'Hello john! You owe 10%'