【Python教程】R和U的区别

零 Python教程评论85字数 1585阅读5分17秒阅读模式

所需工具:

Python

聪明的大脑文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

勤劳的双手文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

注意:本站只提供教程,不提供任何成品+工具+软件链接,仅限用于学习和研究,禁止商业用途。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

python中字符串前面我们经常看到加r(R)或u/(U)的前缀,而这两个符号是什么意思呢?文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

1.r(R)

r意为raw,表示不包含转义字符的原生字符串。常见的转义字符包括下列几种:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

转义字符 描述
\(在行尾时) 续航符
\\ 反斜杠符号
' 单引号(字符串需要为""形式)
" 双引号(需要字符串用需要为''形式)
\b 退格(Backspace)
\000
\n 换行
\v 纵向制表符
\t 横向制表符

下面是几个转义字符的演示:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

[php]
print("Hello\
,world")
# Hello,world
print("Hello\\,world")
# Hello\,world
print("Hello',world")
# Hello',world
print('Hello",world')
# Hello",world
print("Hello\b,world")
# Hell,world
print("Hello\000,world")
#Hello,world
print("Hello\n,world")
# Hello
# ,world
print("Hello\v,world")
# Hello
# ,world
print("Hello\t,world")
# Hello ,world
print("Hello\020,world")
[/php]文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

r前缀的作用就是告诉解释器,我这个字符串不包含转义字符,比如字符串中如果包含'\n',则不将其视为换行符,而视为一个'\'字符和'n'字符来处理。如下面所示:文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/9726.html

[php]
print("Hello,\nworld")
# Hello,
# world
print("Hello,\nworld")
# Hello,\nworld
[/php]

r前缀最常见的用途是正则表达式,因为正则匹配的模式经常包含各种反斜杠等字符,我们不希望它被解析为转移字符,因此需要加上'r'。

[php]
import re
str_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']
[/php]

2.u(U)

u(U)前缀表示字符串的编码方式为unicode。不仅包含中文在内的任意字符串都可以采用unicode编码。一般英文字符串在任何编码的情况下都能正常解析,所以一般不用显式添加u。然而中文最好要说明其编码,否则编码转换时就会出现乱码(比如本来用gbk编码但拿unicode来解码)。解决编码问题一劳永逸的方法是在.py的文件头添加如下内容:

[php]
# coding: utf-8
[/php]

补充

字符串前加b

例: response = b'

Hello World!

' # b' ' 表示这是一个 bytes 对象

作用:

b" "前缀表示:后面字符串是bytes 类型。

用处:

网络编程中,服务器和浏览器只认bytes 类型数据。

如:send 函数的参数和 recv 函数的返回值都是 bytes 类型

附:

在 Python3 中,bytes 和 str 的互相转换方式是

[php]
str.encode('utf-8')
bytes.decode('utf-8')
[/php]

字符串前加f

[php]
import time
t0 = time.time()
time.sleep(1)
name = 'processing'
[/php]

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

输出:

processing done in 1.00 s

零
  • 转载请务必保留本文链接:https://www.0s52.com/bcjc/pythonjc/9726.html
    本社区资源仅供用于学习和交流,请勿用于商业用途
    未经允许不得进行转载/复制/分享

发表评论