字符串
洛 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 |