python中字符串前面加f、r、u、b区别 || python转义字符
1.字符串前加 u:后面字符串以 unicode 格式进行编码(表示中文),一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。
【不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码。一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u;但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码。 建议所有编码方式采用utf8】
使用场景:一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。
2.字符串前加 r:在字符串前加r可防止字符串转义
r"" 的作用是:去除转义字符
①字符串常量,在字符串前加r
场景:想复制某个文件夹的目录,假设是 F:\Python_Easy\n4\test.py
当不用 r"" ,有三种写法:
print("F:\Python_Easy\n4\test.py ") print("F:\\Python_Easy\\n4\\test.py ") print("F:/Python_Easy/n4/test.py ")
运行结果:
F:\Python_Easy 4 est.py F:\Python_Easy\n4\test.py F:/Python_Easy/n4/test.py
而通常如果直接复制目录路径的话,你就粘贴出来的字符串就是第一行代码所示,所有 \ 会当成转义符;而为了消除转义作用,需要手动再加一个 \ ,否则你也得手动改成何第三行代码一样。
而 r"" 的出现就是为了避免这种情况。
②如果字符串是从文件中读取,则在读取时加r
例如:有文件 test.txt中有 adfdfasd\tfdsadf\t E:\codes 则代码可以这么写: file1=open(r"text.txt","r") for line in file1: print(line) 结果为: adfdfasd\tfdsadf\t E:\codes
3.字符串前加 b:b" "前缀表示:后面字符串是bytes类型【 b' ' 表示后面的字符串是bytes 对象】。
网络编程中,服务器和浏览器只认bytes 类型数据。
在 Python3 中,bytes 和 str 的互相转换方式:
str--->bytes:【str.encode('utf-8')】 bytes--->str:【bytes.decode('utf-8')】
举例:
print("中文".encode(encoding="utf-8")) print(b'\xe4\xb8\xad\xe6\x96\x87'.decode()) print(r'\xe4\xb8\xad\xe6\x96\x87')
运行结果:
b'\xe4\xb8\xad\xe6\x96\x87' 中文 \xe4\xb8\xad\xe6\x96\x87
可以看到,当你不加 b"" 时,他也就是个普通的字符串而已,不会识别为字节类型。
bytes数据类型应用场景:像图片、音视频等文件的读写就是用bytes数据。
4.字符串前加 f:以f开头表示在字符串内支持大括号内的python 表达式
作用:相当于 format 函数。
例如:
name = "帅哥" age = 12 print(f"my name is {name},age is {age}")
运行结果:
my name is 帅哥,age is 12
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数yy代表的字符,例如:\o12代表换行 |
\xyy | 十进制数yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!