Python字符串前缀r、f、u、b、L详解与对比

陆景行
陆景行
发布时间:2026-10-14 | 4人浏览过
原创

本文详细解析Python中字符串前缀r、f、u、b及L的具体含义与应用场景。涵盖Unicode编码处理中文、原始字符串r避免转义、字节串b用于网络编程、f-string高效格式化以及宽字符L的使用差异,帮助开发者根据需求选择正确的字符串类型。

本文将系统介绍Python字符串常见前缀u、r、b、f及L的具体含义与使用场景。

1、字符串前缀 u

示例:u"包含中文字符的字符串。"

主要作用:

该前缀指示字符串以Unicode格式进行编码。通常在包含中文字符的字符串前使用,旨在防止因源码存储编码格式不一致(如UTF-8与GBK混用)导致后续使用时出现乱码问题。

2、字符串前缀 r

示例:r"\n\n\n\n" # 此处表示包含四个反斜杠和n字符的普通字符串,而非四个换行符。

主要作用:

关闭反斜杠的转义机制。

所谓特殊字符,是指由反斜杠加上特定字母组合表示特定含义的字符,例如最常见的"\n"代表换行,"\t"代表制表符(Tab)。

典型应用场景:

常用于正则表达式处理,对应Python的re模块。

3、字符串前缀 b

示例:response = b'<h1>Hello World!</h1>' # b' '前缀表明这是一个bytes(字节)对象。

主要作用:

b" "前缀声明后续字符串为bytes类型。

实际用途:

在网络编程中,服务器与浏览器仅识别bytes类型的数据。

例如:socket通信中send函数的参数和recv函数的返回值均为bytes类型。

补充说明:

在Python 3中,bytes与str类型的相互转换方式如下:


str.encode('utf-8')
bytes.decode('utf-8')

4、字符串前缀 f


import time
t0 = time.time()
time.sleep(1)
name = 'processing'

# 以 f开头表示在字符串内支持大括号内的python 表达式
print(f'{name} done in {time.time() - t0:.2f} s')

输出示例:

processing done in 1.00 s

接下来深入解析Python字符串前缀r、f、u、L的具体区别。

f-strings(格式化字符串字面量)指以f或F开头的字符串,其中大括号{}内的表达式会被计算并替换为值。该特性目前支持Python 3.6及以上版本。

以下是f-strings的具体使用方法。

基本用法(核心作用:值替换)


>>>name = 'xiaoming'
>>> age = 18
>>> f"hi, {name}, are you {age}"
#结果如下
'hi, xiaoming, are you 18'
>>> F"hi, {name}, are you {age}"
'hi, xiaoming, are you 18'

在字符串前添加r前缀可防止字符串内容被转义处理。

主要作用:避免特殊字符或不可打印字符被解释为控制字符。


>>> s='abc\nabc'
>>> s
'abc\nabc'
>>> print s
abc
abc
>>> s=r'abc\nabc'
>>> s
'abc\\nabc'
>>> print s
abc\nabc

u/U前缀:表示Unicode字符串。

这不仅仅针对中文,而是适用于任何字符串,代表对字符串进行Unicode编码。一般英文字符在各种编码下通常能正常解析,因此常省略u前缀;但中文字符必须明确指定编码,否则编码转换时极易出现乱码。建议统一采用UTF-8编码方式。

字符串前缀 “L”

表示宽字符(Long),即Unicode字符。Unicode字符集由两个字节组成,L前缀告知编译器使用两个字节的Unicode字符集。例如L"我的字符串"表示将ANSI字符串转换为Unicode字符串,即每个字符占用两个字节。


不加时占用字节
strlen("asd") = 3; 
 
 加之后占用字节
strlen(L"asd") = 6;

至此,关于Python字符串前缀r、f、u、L的区别解析完毕。如需了解更多相关Python字符串处理内容,请查阅本站往期文章或继续浏览后续内容。感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表