📅  最后修改于: 2023-12-03 14:52:55.195000             🧑  作者: Mango
在程序开发过程中,我们经常需要动态地在字符串中插入变量等数据。使用字符串映射是一种常见的实现方式。
在 Python 中,字符串映射一般指通过格式化操作将变量或数据插入到字符串中的过程。Python 提供了多种字符串格式化的方式,其常见的形式有:
以下将分别介绍这三种方式。
% 运算符是 Python 中最早的字符串格式化方式,其基本语法如下:
'字符串 % 格式化字符串' % 变量
其中,字符串中用 %s 表示要插入变量的位置,变量通过 % 运算符的右侧传入,可以是单个变量或元组。
示例代码:
name = 'Alice'
age = 20
print('My name is %s, I am %d years old.' % (name, age))
输出结果:
My name is Alice, I am 20 years old.
% 运算符的右侧可以跟多种格式化字符串,如下表所示:
| 格式化字符串 | 描述 | |----------------|------------------------------------------------------| | %s | 字符串 (采用 str() 的显示) | | %r | 字符串 (采用 repr() 的显示) | | %c | 单个字符 | | %b | 二进制整数 | | %d 或 %i | 十进制整数 | | %o | 八进制整数 | | %x 或 %X | 十六进制整数 | | %e 或 %E | 指数 (基底写为e) | | %f 或 %F | 浮点数 | | %g 或 %G | 指数(e)或浮点数,根据显示长度决定 | | %% | 字符 '%' |
在字符串映射中要输出 % 符号,需要写成 %%。
示例代码:
name = 'Bob'
score = 0.88
print('%s got %.1f%% in the test.' % (name, score*100))
输出结果:
Bob got 88.0% in the test.
str.format() 方法是 Python 中另一种字符串格式化的方式,其基本语法如下:
'字符串 {}'.format(变量)
其中,大括号 {} 表示要插入变量的位置,变量通过 format() 方法传入,可通过位置或关键字参数传递,不定参数通过 *args 和 **kwargs 传入。
示例代码:
name = 'Alice'
age = 20
print('My name is {}, I am {} years old.'.format(name, age))
print('{1} is {0} years old.'.format(age, name))
print('My name is {n}, I am {a} years old.'.format(n='Bob', a=22))
输出结果:
My name is Alice, I am 20 years old.
Alice is 20 years old.
My name is Bob, I am 22 years old.
format() 方法中的大括号中可以使用格式化字符串,如下表所示:
| 格式化字符串 | 描述 | |----------------|------------------------------------------------------| | {:s} | 字符串 | | {:d} | 十进制整数 | | {:o} | 八进制整数 | | {:x} | 十六进制整数 | | {:X} | 大写十六进制整数 | | {:f} | 浮点数,十进制形式 | | {:e} | 浮点数,科学计数法形式,小写 e | | {:E} | 浮点数,科学计数法形式,大写 E | | {:g} | 浮点数,自动选择小数或科学计数法形式 | | {:G} | 浮点数,自动选择小数或科学计数法形式,大写 E | | {:#o} | 八进制整数,带前缀 0o | | {:#x} | 十六进制整数,带前缀 0x 或 0X | | {:#X} | 十六进制整数,带前缀 0x 或 0X,大写字母 | | {:#f} | 浮点数,带小数点和后缀 f | | {:#e} 或 {:#E} | 浮点数,科学计数法形式,带小写 e 或大写 E,带后缀 f |
示例代码:
score = 0.88
print('score: {:.2f}'.format(score))
print('score: {:.0%}'.format(score))
print('score: {:e}'.format(score))
print('score: {:.2f} ({:.0%})'.format(score, score))
输出结果:
score: 0.88
score: 88%
score: 8.800000e-01
score: 0.88 (88%)
在字符串映射中要输出 { 或 } 符号,需要使用 {{ 和 }} 转义。
示例代码:
print('The place is {{name}}, the country is {{country}}.'.format(name='Beijing', country='China'))
输出结果:
The place is {name}, the country is {country}.
f-string 是 Python 3.6 中新加入的字符串格式化方式,其基本语法如下:
f'字符串 {变量}'
其中,大括号 {} 表示要插入变量的位置,变量直接写在大括号内即可。
示例代码:
name = 'Alice'
age = 20
print(f'My name is {name}, I am {age} years old.')
输出结果:
My name is Alice, I am 20 years old.
f-string 中的大括号中也可以使用格式化字符串,如下表所示,与 str.format() 方法中的格式化字符串相同。
示例代码:
score = 0.88
print(f'score: {score:.2f}')
print(f'score: {score:.0%}')
print(f'score: {score:e}')
print(f'score: {score:.2f} ({score:.0%})')
输出结果:
score: 0.88
score: 88%
score: 8.800000e-01
score: 0.88 (88%)
在 f-string 中要输出 { 或 } 符号,需要使用 {{ 和 }} 转义。
示例代码:
print(f'The place is {{name}}, the country is {{country}}.')
输出结果:
The place is {name}, the country is {country}.
name = 'Bob'
score = 0.88
# % 运算符
print('%s got %.1f%% in the test.' % (name, score*100))
# str.format() 方法
print('{0} got {1:.1%} in the test.'.format(name, score))
print('{n} got {s:.1%} in the test.'.format(n=name, s=score))
# f-string
print(f'{name} got {score:.1%} in the test.')
输出结果:
Bob got 88.0% in the test.
Bob got 88.0% in the test.
Bob got 88.0% in the test.
Bob got 88.0% in the test.
本文介绍了 Python 中字符串映射的概念和三种实现方式:% 运算符、str.format() 方法和 f-string,以及其常见用法和格式化字符串。熟练掌握字符串映射可以提高代码的可读性和实现效率。