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
例如:有⽂件  中有                            adfdfasd\tfdsadf\t                  E:\codes
则代码可以这么写:
file1=open(","r")
for line in file1:
print(line)
结果为:
adfdfasd\tfdsadf\t                  E:\codes
3.字符串前加 b:b" "前缀表⽰:后⾯字符串是bytes类型【 b' ' 表⽰后⾯的字符串是bytes 对象】。
⽹络编程中,服务器和浏览器只认bytes 类型数据。
在 Python3 中,bytes 和 str 的互相转换⽅式:
str--->bytes:【de('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 函数。
例如:unicode字符转中文
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其它的字符以普通格式输出