这篇教程浅析Python字符串中的r和u的区别写得很实用,希望能帮到您。 Python中字符串前面我们经常看到加r(R)或u/(U)的前缀,而这两个符号是什么意思呢?
1.r(R)r意为raw,表示不包含转义字符的原生字符串。常见的转义字符包括下列几种: 转义字符 | 描述 | /(在行尾时) | 续航符 | // | 反斜杠符号 | ' | 单引号(字符串需要为""形式) | " | 双引号(需要字符串用需要为''形式) | /b | 退格(Backspace) | /000 | 空 | /n | 换行 | /v | 纵向制表符 | /t | 横向制表符 | 下面是几个转义字符的演示: print("Hello/,world")# Hello,worldprint("Hello//,world")# Hello/,worldprint("Hello',world")# Hello',worldprint('Hello",world')# Hello",worldprint("Hello/b,world")# Hell,worldprint("Hello/000,world")#Hello,worldprint("Hello/n,world")# Hello# ,worldprint("Hello/v,world")# Hello# ,worldprint("Hello/t,world")# Hello ,worldprint("Hello/020,world") r前缀的作用就是告诉解释器,我这个字符串不包含转义字符,比如字符串中如果包含'/n',则不将其视为换行符,而视为一个'/'字符和'n'字符来处理。如下面所示: print("Hello,/nworld")# Hello,# worldprint("Hello,/nworld")# Hello,/nworld r前缀最常见的用途是正则表达式,因为正则匹配的模式经常包含各种反斜杠等字符,我们不希望它被解析为转移字符,因此需要加上'r'。 如 import restr_pat= re.compile(r'/d+//d+//d+')text = 'Today is 12/10/2021, yesterday is 12/11/2021'res = str_pat.findall(text)print(res)['12/10/2021', '12/11/2021']
2.u(U)u(U)前缀表示字符串的编码方式为unicode。不仅包含中文在内的任意字符串都可以采用unicode编码。一般英文字符串在任何编码的情况下都能正常解析,所以一般不用显式添加u。然而中文最好要说明其编码,否则编码转换时就会出现乱码(比如本来用gbk编码但拿unicode来解码)。解决编码问题一劳永逸的方法是在.py的文件头添加如下内容:
补充字符串前加b 例: response = b'<h1>Hello World!</h1>' python实现微信小程序反编译效果 OpenCV |