%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])
答案 0 :(得分:176)
这是一种字符串格式化语法(它从C借用)。
请参阅"PyFormat":
Python支持将值格式化为 字符串。虽然这可以包括 最复杂的表达方式 基本用法是将值插入到 带有
%s
占位符的字符串。
编辑:这是一个非常简单的例子:
#Python2
name = raw_input("who are you?")
print "hello %s" % (name,)
#Python3+
name = raw_input("who are you?")
print("hello %s" % (name,))
%s
令牌允许我插入(并可能格式化)字符串。请注意,%s
标记将替换为%
符号后传递给字符串的任何内容。另请注意,我在这里也使用了一个元组(当你只有一个使用元组的字符串是可选的时)来说明可以在一个语句中插入和格式化多个字符串。
答案 1 :(得分:101)
安德鲁的答案很好。
只是为了帮助你多一点,这里是你如何在一个字符串中使用多种格式
"Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike".
如果您使用的是in而不是string,请使用%d而不是%s。
"My name is %s and i'm %d" % ('john', 12) #My name is john and i'm 12
答案 2 :(得分:25)
在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'
答案 3 :(得分:13)
%s
表示 string 的转换类型。更具体地说,%s
使用str()
函数将指定值转换为字符串。将其与使用%r
函数进行值转换的repr()
转换类型进行比较。
答案 4 :(得分:6)
回答你的第二个问题:这段代码做了什么?...
这是接受命令行参数的Python脚本的相当标准的错误检查代码。
所以第一个if
声明转换为:如果你没有通过我的论证,我会告诉你将来如何通过我的论证,例如:你会在屏幕上看到这个:
Usage: myscript.py database-name
下一个if
语句检查传递给脚本的'database-name'是否实际存在于文件系统中。如果没有,你会得到这样的信息:
ERROR: Database database-name was not found!
argv [0]是脚本名称(它是 操作系统是否依赖 这是一个完整的路径名或不是)。如果 该命令是使用-c执行的 命令行选项 解释器,argv [0]设置为 字符串'-c'。如果没有脚本名称 传递给Python解释器, argv [0]是空字符串。
答案 5 :(得分:4)
%s
和%d
是用于格式化字符串/小数/浮点等的格式说明符或占位符。
MOST 常用的格式说明符:
%s
:字符串
%d
:小数点
%f
:浮动
自我解释代码:
name = "Gandalf"
extendedName = "the Grey"
age = 84
IQ = 149.9
print('type(name):', type(name)) #type(name): <class 'str'>
print('type(age):', type(age)) #type(age): <class 'int'>
print('type(IQ):', type(IQ)) #type(IQ): <class 'float'>
print('%s %s\'s age is %d with incredible IQ of %f ' %(name, extendedName, age, IQ)) #Gandalf the Grey's age is 84 with incredible IQ of 149.900000
#Same output can be printed in following ways:
print ('{0} {1}\'s age is {2} with incredible IQ of {3} '.format(name, extendedName, age, IQ)) # with help of older method
print ('{} {}\'s age is {} with incredible IQ of {} '.format(name, extendedName, age, IQ)) # with help of older method
print("Multiplication of %d and %f is %f" %(age, IQ, age*IQ)) #Multiplication of 84 and 149.900000 is 12591.600000
#storing formattings in string
sub1 = "python string!"
sub2 = "an arg"
a = "i am a %s" % sub1
b = "i am a {0}".format(sub1)
c = "with %(kwarg)s!" % {'kwarg':sub2}
d = "with {kwarg}!".format(kwarg=sub2)
print(a) # "i am a python string!"
print(b) # "i am a python string!"
print(c) # "with an arg!"
print(d) # "with an arg!"
答案 6 :(得分:1)
这是Python3中的一个很好的例子。
table