字符串

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

执行结果:a

  也可根据字符索引区间提取多个字符(切片提取)。

Fetch2_4 = Me[2:4]
print(Fetch2_4)
1
2

执行结果:am

# 链接

L = 'AB' + 'CD'
print(L)
1
2

执行结果:ABCD

# 重复

R = 'AB' * 3
print(R)
1
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! 包含以 {} 标注的可在运行时求值的表达式

混用

前缀可以有限制的混用,例如:brfr

# 转义

  反斜杠(\)用于转义特殊字符,例如,换行符、反斜杠本身、引号等。

注意

Windows 下路径以 \ 表示,Python 读取路径时需标记不转义(路径字符串前增加 r 或 R ),或采用\\/

  如未标注 rR 前缀,字符串和字节串字面值中,转义序列以类似 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