字符串
洛 2022/2/20 Python 基础
字符串是 Python 中最常用的数据类型,可以使用引号( '
或 "
)来创建字符串,也可使用或str
来将其他数据强制转换为字符串。例如:
Me = 'I am Luo!' # 或 Me = "I am Luo!"
1
提示
源字符集由编码声明定义;源文件没有编码声明时,默认为 UTF-8。
# 索引
字符串中每个字符的索引位置从左至右起,第一位为 0;从右至左起,最后一位为 -1。
# 提取
可根据字符索引提取对应位置的字符。
Me = 'I am Luo!'
Fetch2 = Me[2]
print(Fetch2)
1
2
3
2
3
执行结果:
a
也可根据字符索引区间提取多个字符(切片提取)。
Fetch2_4 = Me[2:4]
print(Fetch2_4)
1
2
2
执行结果:
am
# 链接
L = 'AB' + 'CD'
print(L)
1
2
2
执行结果:
ABCD
# 重复
R = 'AB' * 3
print(R)
1
2
2
执行结果:
ABABAB
# 判断
'AB' == 'ABCD' # 'AB' != 'ABCD' # 'AB' in 'ABCD' # 'AB' not in 'ABCD'
1
执行结果:
False
# True # True # False
# 前缀
前缀 | 描述 | 示例 | 结果 | 提示 |
---|---|---|---|---|
b 或 B | 生成字节串 (opens new window) | b'\xf0\xf1\xf2' | b'\xf0\xf1\xf2' | 字节串只能包含 ASCII 字符。 |
r 或 R | 原始字符串 | r'\ss' | \ss | 字符串和字节串都可以加此前缀 |
f 或 F | 格式字符串 | f'You are {Me[-4:-1]}!' | You are Luo! | 包含以 {} 标注的可在运行时求值的表达式 |
混用
前缀可以有限制的混用,例如:br
,fr
。
# 转义
反斜杠(\
)用于转义特殊字符,例如,换行符、反斜杠本身、引号等。
注意
Windows 下路径以 \
表示,Python 读取路径时需标记不转义(路径字符串前增加 r 或 R ),或采用\\
或 /
。
如未标注 r
或 R
前缀,字符串和字节串字面值中,转义序列以类似 C 标准的规则进行解释。可用的转义序列如下:
转义字符 | 描述 |
---|---|
\newline | 忽略反斜杠与换行符 |
\\ | 反斜杠(\) |
\' | 单引号(') |
\" | 双引号(") |
\a | ASCII 响铃(BEL) |
\b | ASCII 退格符(BS) |
\f | ASCII 换页符(FF) |
\n | ASCII 换行符(LF) |
\r | ASCII 回车符(CR) |
\t | ASCII 水平制表符(TAB) |
\v | ASCII 垂直制表符(VT) |
\ooo | 八进制数 ooo 字符 |
\xhh | 十六进制数 hh 字符 |
# 格式化
格式化字符串通常使用 % 占位符 或 format
函数。
# % 占位符
格式 | 描述 | 示例 | 结果 |
---|---|---|---|
%c | 格式化字符及其ASCII码 | '%c' % 2 | \x02 |
%s | 格式化字符串 | '%s' % 2 | 2.000000 |
%d | 格式化整数 | '%d' % 2.1 | 2 |
%u | 格式化无符号整型 | '%u' % 2.1 | 2 |
%o | 格式化无符号八进制数 | '%o' % 18 | 22 |
%x | 格式化无符号十六进制数 | '%x' % 55 | 37 |
%f | 格式化浮点数字,可指定小数点后的精度 | '%f' % 55 | 55.000000 |
%e | 用科学计数法格式化浮点数 | '%e' % 55 | 5.500000e+01 |
格式化操作符辅助指令:
符号 | 描述 | 示例 | 结果 |
---|---|---|---|
*.* | 定义字符串宽度和浮点数精度 | '%5.1f' % 55 | 55.0 |
- | 左对齐(默认右对齐) | '%-5s' % 55 | aa |
+ | 在正数前面正号 | '%+d' % 15 | +15 |
0 | 显示的数字前面填充 '0' | '%05d' % 2 | 00002 |
(var) | 映射变量 | '%(W)s' % {'L':19,'W':20} | 20 |
# format 函数
格式 | 描述 | 示例 | 输出 |
---|---|---|---|
{:.2f} | 保留小数点后两位 | '{:.2f}'.format(3.1415926 ) | 3.14 |
{:+.2f} | 带符号保留小数点后两位 | '{:+.2f}'.format(3.1415926 ) | +3.14 |
{:.0f} | 去除浮点数的小数位 | '{:.0f}'.format(3.1415926 ) | 3 |
{:0>2d} | 整数补零 (右对齐,左侧填充,宽度为 2 ) | '{:0>2d}'.format(5) | 05 |
{:x<4d} | 整数补 x (左对齐,右侧填充,宽度为 4 ) | '{:x<4d}'.format(5) | 5xxx |
{:,} | 以逗号分隔的数字格式 | '{:,}'.format(5000) | 5,000 |
{:.2%} | 百分比格式 | '{:.2%}'.format(0.25) | 25.00% |
{:.2e} | 指数记法 | '{:.2e}'.format(1000) | 1.00e+03 |
{:>3d} | 右对齐 (默认,宽度为 3 ) | '{:>3d}'.format(1) | 1 |
{:<3d} | 左对齐 (宽度为 3 ) | '{:<3d}'.format(1) | 1 |
{:^3d} | 中间对齐 (宽度为 3 ) | '{:^3d}'.format(1) | 1 |