python string substring

Python字符串前缀的含义

在Python中,字符串字面量前面加上不同字母(比如rbuf)所代表的含义,这是Python字符串的重要特性。

各类前缀字母的具体含义

下面按常用程度逐一解释每个前缀的作用,结合示例让你更容易理解:

1. f 前缀:格式化字符串(f-string)

  • 作用:最常用的字符串格式化方式,直接在字符串中嵌入变量或表达式,Python会自动计算并替换成对应的值。
  • 适用场景:快速拼接变量和字符串,语法简洁高效。
  • 示例
    1
    2
    3
    4
    5
    name = "小明"
    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:原始字节字符串
  • 注意:fb不能组合(fb/bf不合法),ub也不能组合。

示例(fr前缀):

1
2
3
4
path = "docs"
# fr前缀:保留\的原始含义,同时格式化变量
s = fr"C:\{path}\readme.txt"
print(s) # 输出:C:\docs\readme.txt

总结

  1. f:格式化字符串,嵌入变量/表达式,日常开发最常用;
  2. r:原始字符串,忽略转义,适合路径、正则表达式;
  3. b:字节字符串,处理二进制数据(如网络、文件);
  4. u:Unicode字符串,Python 3中仅作兼容,默认无需加;
  5. 合法组合:fr/rfbr/rbfbub不可组合。
坚持原创技术分享,您的支持将鼓励我继续创作!
0%