Python格式字符串中的%s是什么意思?

212 投票
8 回答
1013696 浏览
提问于 2025-04-15 12:16

%s在Python中是什么意思?下面这段代码是干什么的呢?

比如说……

 if len(sys.argv) < 2:
     sys.exit('Usage: %s database-name' % sys.argv[0])

 if not os.path.exists(sys.argv[1]):
     sys.exit('ERROR: Database %s was not found!' % sys.argv[1])

8 个回答

36

在Python 2.6中引入了format方法。这个方法功能更强大,而且使用起来也没有太复杂:

>>> "Hello {}, my name is {}".format('john', 'mike')
'Hello john, my name is mike'.

>>> "{1}, {0}".format('world', 'Hello')
'Hello, world'

>>> "{greeting}, {}".format('world', greeting='Hello')
'Hello, world'

>>> '%s' % name
"{'s1': 'hello', 's2': 'sibal'}"
>>> '%s' %name['s1']
'hello'
153

Andrew的回答很不错。

为了更好地帮助你,这里有一个在一个字符串中使用多种格式的方法:

"Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike".

如果你使用的是整数而不是字符串,那么就用 %d 代替 %s。

"My name is %s and I'm %d" % ('john', 12) #My name is john and I'm 12
250

这是一种字符串格式化的语法(它是从C语言借来的)。

请查看“PyFormat”

Python支持将值格式化为字符串。虽然这可以包含非常复杂的表达式,但最基本的用法是用%s占位符将值插入到字符串中。

这里有一个非常简单的例子:

#Python 2
name = raw_input("who are you? ")
print "hello %s" % (name,)

#Python 3+
name = input("who are you? ")
print("hello %s" % (name,))

这个%s标记让我可以插入(并可能格式化)一个字符串。注意,%s标记会被我在%符号后面传入的内容替换。还要注意,我在这里使用了一个元组(当你只有一个字符串时,使用元组是可选的),这说明可以在一个语句中插入和格式化多个字符串。

撰写回答