Skip to content

字符串格式化

https://docs.python.org/zh-cn/3/tutorial/inputoutput.html#tut-f-strings
https://docs.python.org/zh-cn/3/library/string.html#format-string-syntax

1. f-string

f-string 是标注了 fF 前缀的字符串字面值。
这种字符串可包含替换字段,即以 {表达式} 标注的方式,将 Python 表达式的值添加到字符串内。

常用代码示例:

python
# 直接使用
girl = '小芳'
print(f'{girl},我宣你!')  # 小芳,我宣你!

# 计算
i = j = 9
print(f'{i}*{j}={i*j}')     # 9*9=81

# 保留指定位小数,会四舍五入
pi = 3.1415926
print(f'pi={pi:.3f}')       # pi=3.142

# 对齐
# 因为数字和字符串的默认对齐不一样,所以最好每次都明确指定对齐方式
s = 'hello'
print(f'{s:<9}')            # 'hello    '   左对齐
print(f'{s:>9}')            # '    hello'   右对齐
print(f'{s:^9}')            # '  hello  '   居中
print(f'{s:w<9}')           # 'hellowwww'   以w进行填充

# 千位分隔
money = 1234567890
print(f'{money:,}')         # 1,234,567,890

# 百分比
r = 0.6789
print(f'{r:.2%}')           # 67.89%

2. format() 方法

{} 中表达式语法与 f-string 类似,不再介绍

常用代码示例:

python
# 基本用法
print('{}牺牲生命,{}出卖组织。'.format('就算', '也不'))

# 位置参数,可以共用
print('{0}牺牲生命,{1}出卖组织。'.format('害怕', '所以'))
print('{1}牺牲生命,{0}出卖组织。'.format('忘了', '白白'))
print('{0}牺牲生命,{0}出卖组织。'.format('不要'))

# 关键字参数
print('{a}牺牲生命,{b}出卖组织。'.format(a='与其', b='不如'))
print('{a}牺牲生命,{b}出卖组织。'.format(b='除非', a='绝不'))
print('{a}牺牲生命,{a}出卖组织。'.format(a='坚持'))

# 使用 * 符号,将元组/列表作为位置参数
t = ('不用', '就能')
print('{}牺牲生命,{}出卖组织。'.format(*t))

# 使用 ** 符号,将字典作为关键字参数
d = {'a': '就算', 'b': '也要'}
print('{a}牺牲生命,{b}出卖组织。'.format(**d))

运行输出:

txt
就算牺牲生命,也不出卖组织。
害怕牺牲生命,所以出卖组织。
白白牺牲生命,忘了出卖组织。
不要牺牲生命,不要出卖组织。
与其牺牲生命,不如出卖组织。
绝不牺牲生命,除非出卖组织。
坚持牺牲生命,坚持出卖组织。
不用牺牲生命,就能出卖组织。
就算牺牲生命,也要出卖组织。

3. % 运算符

% 运算符(求余符)也可用于字符串格式化。
已经不推荐使用: https://docs.python.org/zh-cn/3/tutorial/inputoutput.html#old-string-formatting