约 3738 字
约 19 分钟
字符串相当于于字符的列表,是一种十分常用且功能复杂的类型。
在 基础语法 - 变量与基本类型 一节中, 我们已经初步接触过字符串了。
计算机通过电子元件进行二进制存储,因此字符需要与二进制进行对应,这种对应方式称作编码。
例如英文字母 A
在 ASCII 编码 中对应的二进制值为 01000001
即十进制的 65
。
计算机的最小存储单元称为 字节(byte),一个字节拥有 8 个二进制位。
在 Python 中,存在一种名为 bytes
的类型,存储连续的多个字节。
bytes
类型的字面量类似字符串,通过 b'xxxx'
或 b"xxxx"
表示,例如 b'hello world'
。
将字符串转换为 bytes 的操作称为 编码(encode),反之将 bytes 转换为字符串的操作称作解码:
data:bytes = b'hello world'
print(data)
text:str = data.decode() # 解码
print(text)
print(text.encode()) # 编码
Loading...
bytes 看起来好像和字符串一样,只是开头多了个 b
,实则不然:
text:str = '你好世界'
print(text)
data:bytes = text.encode() # 编码
print(data)
print(len(text), len(data)) # 可以看到长度不通
print(text[1], data[1]) # text[1] 是一个完整的汉字“好”,而 data[1] 是“你”字中的一个字节
Loading...
在编程开发中常常需要根据一些变量来创建字符串,可以使用 %
运算符进行格式化,语法如下:
"格式化字符串" % (值1, 值2, ...) # (值1, 值2, ...) 是一个元组
只有一个值时也可以写作:
"格式化字符串" % 值 # 一个单独的值
例如:
print("猪肉的价格是 %d 元/斤" % 15)
print("%d 斤猪肉的价格是 %d 元" % (3, 3*15))
Loading...
这里格式化字符串里的 %d
是 十进制整数 占位符,对应的值会以十进制整数的格式替换到它的位置,其它常见的占位符还有:
%%
: 百分号本身 %d
: 十进制整数 %o
: 十进制整数 %x
: 十六进制整数(小写) %X
: 十六进制整数(大写) %f
: 浮点数 %s
: 字符串 这种方式已不常用,更多信息请参考:printf 风格的字符串格式化
format
方法比 %
更加灵活,它使用花括号 {}
作为占位符,并且可以在花括号中编辑格式,例如:
print("Name: {}, Age: {}".format("Jerry", 18)) # 按参数顺序替换
print("Name: {1}, Age: {0}".format(19, "Tom", )) # 按指定顺序替换
print("Name: {name}, Age: {age}".format(name="Tuffy", age=8)) # 按名称替换
Loading...
format
可以指定宽度,例如:
# 打印九九乘法表
for x in range(1, 10):
for y in range(1, 10):
print(' {:2} '.format(x * y), end='') # 最小宽度为 2 个字符
print('')
Loading...
宽度可以是变量:
# 宽度可以式变量
print("'{:{width}}'".format('txt', width=7))
Loading...
可以指定对齐方式:
print("'{:<5}'".format('txt')) # 最小宽度为5,左对齐
print("'{:>5}'".format('txt')) # 最小宽度为5,右对齐
print("'{:^5}'".format('txt')) # 最小宽度为5,居中
Loading...
可以使用索引:
score_list:dict[str,int] = {
'Tom': 88,
'Jerry': 99,
'Spike': 66
}
print("成绩如下 Tom:{0[Tom]} Jerry:{0[Jerry]} Spike:{0[Spike]}".format(score_list))
Loading...
通过 format
函数保留 n 位小数:
print("圆周率的近似值是 {}".format(format(3.1415926, '.2f'))) # 保留两位小数
Loading...
参考 格式字符串语法
格式字符串的字面量使用 f'xxxx'
或 f"xxxx"
的形式表示,并使花括号({}
)进行格式化,花括号内可以执行代码,例如:
score_list:dict[str,int] = {
'Tom': 88,
'Jerry': 99,
'Spike': 66
}
print(f"成绩如下 Tom:{score_list['Tom']} Jerry:{score_list['Jerry']} Spike:{score_list['Spike']}")
Loading...
原始字符串的字面量使用 r'xxxx'
或 r"xxxx"
的形式表示,在原始字符串中没有转义字符,即 \n
表示字符串 \n
本身而非换行。
print(r'hello \n world')
Loading...
常用于正则表达式等其它具备转义字符的场合,避免需要写多重转义。
正则表达式将在后面进行学习
多行字符串使用三对引号('
和 "
均可)表示,例如:
print('''
## 多行字符串
多行字符串使用三对引号(`'`和`"`均可)表示,例如:
''')
Loading...
多行字符串也常被当作多行注释使用,例如:
'''
没有赋值给变量,也不参与运算
因此相当于注释
'''
print("hello world")
多行字符串也可以添加 b
、f
、r
前缀来表示 bytes、格式字符串和原始字符串。
创建于 5/1/2025, 4:08:06 PM
更新于 5/1/2025, 4:08:06 PM