这是我参与更文挑战的第18天,活动详情查看: 更文挑战
介绍
相信很多兄弟们在使用Python的过程中, 都遇到过格式化输出字符串的需求
以往我们会使用这种方式:
text = 'Hello'
time = 1
print('%s World %d' % (text, time))
# Hello World 1
复制代码
在Python 3.6中, 新加入f字符串, 我们可以把刚才的代码修改为:
text = 'Hello'
time = 1
print(f'{text} World {time}')
复制代码
是不是有点类似于js的模板字符串?
常用示例
f字符支持Python中各种变量类型, 还支持表达式/函数/对象, 下面简单列举下使用代码
数组
test = ['one', 'two']
print(f'first is {test[0]}')
# first is one
复制代码
字典
test = {'id': 1, 'name': 'Houtaroy'}
print(f"name is {test['name']}")
# name is Houtaroy
复制代码
对象
目标对象需实现__repr__方法:
@dataclass
class User:
name: str
def __repr__(self):
return self.name
user = User(name='test')
print(f'用户: {user}')
# 用户: test
复制代码
表达式
x = 2
y = 3
print(f'{x * y}')
# 6
复制代码
函数
def sum(a, b):
return a + b
x = 2
y = 3
print(f'{sum(x, y)}')
# 5
复制代码
格式化
f字符串同样支持对内容进行格式化
转义
对于{}, 需要用如下方式转义: print(f'{{}}')
对于其它常见符号, 和字符串的转义并无差别: print(f'\'\'')
多行字符串
f字符串同样可应用于多行符号"""
:
name = 'test'
gender = 'unknown'
print(f"""
name is {name}
gender is {gender}
""")
# name is test
# gender is unknown
复制代码
时间格式化
和平常的日期格式化一模一样
print(f'{datetime.now():%Y-%m-%d %H:%M:%S}')
# 2021-01-01 00:00:00
复制代码
浮点数格式化
和正常的浮点数格式化一模一样
test = 1.2
print(f'{test:.3f}')
# 1.200
复制代码
宽度与对齐
直接使用数字指定打印字符的宽度, 如果不够, 可以使用0进行填充, 例如:
for x in range(5, 16):
print(f'{x:03}')
# 005
# 006
# ...
# 015
复制代码
可以使用>进行右对齐, <进行左对齐, 例如:
for x in range(5, 16):
print(f'{x:>2}')
# 5
# 6
# ...
# 15
for x in range(5, 16):
print(f'{x:<2}')
# 5
# 6
# ...
# 15
复制代码
总结
f字符串可以理解为在字符串中运行Python代码, 其大部分使用方法都和正常使用Python的语法相同
格式化的部分需要注意哦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END