Python字符串前缀的含义

在Python中,字符串字面量前面加上不同字母(比如r、b、u、f)所代表的含义,这是Python字符串的重要特性。
各类前缀字母的具体含义
下面按常用程度逐一解释每个前缀的作用,结合示例让你更容易理解:
1. f 前缀:格式化字符串(f-string)
- 作用:最常用的字符串格式化方式,直接在字符串中嵌入变量或表达式,Python会自动计算并替换成对应的值。
- 适用场景:快速拼接变量和字符串,语法简洁高效。
- 示例:
1
2
3
4
5name = "小明"
age = 18
# f前缀允许直接在{}中使用变量/表达式
s = f"我的名字是{name},年龄是{age},明年{age+1}岁"
print(s) # 输出:我的名字是小明,年龄是18,明年19岁
2. r 前缀:原始字符串(raw string)
- 作用:忽略转义字符(比如
\n、\t、\\)的特殊含义,按字面意思解析字符串。 - 适用场景:正则表达式、文件路径(Windows路径常用
\)、需要保留原始符号的场景。 - 示例:
1
2
3
4
5
6# 普通字符串:\n会被解析为换行
s1 = "C:\new_folder\test.txt"
print(s1) # 输出会换行,\n被转义
# r前缀:所有字符原样输出
s2 = r"C:\new_folder\test.txt"
print(s2) # 输出:C:\new_folder\test.txt(无转义)
3. b 前缀:字节字符串(bytes)
- 作用:将字符串转换成
bytes类型(二进制数据),而非默认的str类型(Unicode字符)。 - 适用场景:网络通信、文件读写(二进制模式)、处理字节数据的场景。
- 示例:
1
2
3
4
5
6
7
8# 普通字符串是str类型
s1 = "hello"
print(type(s1)) # 输出:<class 'str'>
# b前缀是bytes类型
s2 = b"hello"
print(type(s2)) # 输出:<class 'bytes'>
# 注意:b前缀只能跟ASCII字符,非ASCII会报错
# s3 = b"你好" # 报错:SyntaxError
4. u 前缀:Unicode字符串
- 作用:明确指定字符串为Unicode类型(Python 3中所有普通字符串默认已是Unicode,因此
u前缀仅作兼容用;Python 2中必须用u来定义Unicode字符串)。 - 适用场景:兼容Python 2代码,或明确标识Unicode字符串。
- 示例:
1
2
3
4# Python 3中u前缀可加可不加,效果一致
s1 = u"你好,Python"
s2 = "你好,Python"
print(type(s1), type(s2)) # 输出:<class 'str'> <class 'str'>
5. 组合前缀(合法组合)
部分前缀可以组合使用,常见的有:
fr/rf:原始格式化字符串(既保留转义字符,又支持格式化)br/rb:原始字节字符串- 注意:
f和b不能组合(fb/bf不合法),u和b也不能组合。
示例(fr前缀):1
2
3
4path = "docs"
# fr前缀:保留\的原始含义,同时格式化变量
s = fr"C:\{path}\readme.txt"
print(s) # 输出:C:\docs\readme.txt
总结
- f:格式化字符串,嵌入变量/表达式,日常开发最常用;
- r:原始字符串,忽略转义,适合路径、正则表达式;
- b:字节字符串,处理二进制数据(如网络、文件);
- u:Unicode字符串,Python 3中仅作兼容,默认无需加;
- 合法组合:
fr/rf、br/rb,f和b、u和b不可组合。