name = 'jack'
age = 18
text = '我是%s, 年龄%s岁' %(name, age)
print(text)
print('我是%s, 年龄%s岁' %('rose', 16))
这里的%s
是为字符串占位,而真正为整型占位的是%d
,严谨的方式写:text = '我是%s, 年龄%d岁' %(name, age)
text = '我是%(name)s, 我叫%(name)s, 年龄:%(age)s岁' %{'name': 'jack', 'age': 12}
print(text)
text = '%s的GDP要提升40%' %'中国'
print(text)
上面这段代码会运行出错:
Traceback (most recent call last):
File "c:\Users\vincent\Desktop\code\neimeng-python\test\test_str.py", line 12, in <module>
text = '%s的GDP要提升40%' %'中国'
ValueError: incomplete format
因为我们的字符串中出现了多个%
,会把%
也当做了占位符,因此报错。
解决这种方式的方法就是多写一个%
,例如:
text = '%s的GDP要提升40%%' %'中国'
print(text)
因此,一旦字符串中存在百分比的形式,一定要加两个%
以实现百分比的效果。
方式1:
text = '我叫{0}, 今年{1}岁, 我是{0}'.format('tom', 16)
print(text)
方式2:
也可以不写序号,默认则是按位置来取对应的值,但是上面的情况则会报错:
text = '我叫{}, 今年{}岁'.format('tom', 16)
print(text)
方式3:
text = '我叫{name}, 今年{age}岁'.format(name='tom', age=16)
print(text)
可以把上面的字符串赋值给变量,下面这种形式本质上跟上面是一样的。
text = '我叫{name}, 今年{age}岁'
print(text.format(name='tom', age=16))
text = '我是%(name)s, 我叫%(name)s, 年龄:%(age)s岁'
print(text %{'name': 'jack', 'age': 12})
Python3.6版本及之后才支持的方式。
name = 'tom'
age = '19'
text = f'我叫{name}, 今年{age}岁'
可以支持表达式:
name = 'jerry'
age = 7
text = f'我叫{name}, 今年{age+1}岁'
print(text)
在Python3.8引入的新功能:
name = 'jerry'
age = 7
text = f'我叫{name}, 今年{age+1 =}岁'
print(text)
输出结果:我叫jerry, 今年age+1=8岁
进制转换:
# 转化为二进制
print(f'今年{22: #b}岁') # 今年 0b10110岁
# 转化为八进制
print(f'今年{22: #o}岁') # 今年 0o26岁
# 转化为十六进制
print(f'今年{22: #x}岁') # 今年 0x16岁
可以执行函数:
name = 'jerry'
text = f'我是{name.upper()}'
print(text) # 会把name变成大写