浅析Python字符串中的r和u的区别

作者:Orion's 时间:2021-06-25 04:47:57 

Python中字符串前面我们经常看到加r(R)或u/(U)的前缀,而这两个符号是什么意思呢?

1.r(R)

r意为raw,表示不包含转义字符的原生字符串。常见的转义字符包括下列几种:

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

下面是几个转义字符的演示:


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")

r前缀的作用就是告诉解释器,我这个字符串不包含转义字符,比如字符串中如果包含'\n',则不将其视为换行符,而视为一个'\'字符和'n'字符来处理。如下面所示:


print("Hello,\nworld")
# Hello,
# world
print("Hello,\nworld")
# Hello,\nworld

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


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']

2.u(U)

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


# coding: utf-8

补充

字符串前加b

例: response = b'<h1>Hello World!</h1>'     # b' ' 表示这是一个 bytes 对象

作用:

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

用处:

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

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

附:

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


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

字符串前加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

参考文献

[1] https://www.python.org/

[2] Martelli A, Ravenscroft A, Ascher D. Python cookbook[M]. " O'Reilly Media, Inc.", 2005.

来源:https://www.cnblogs.com/orion-orion/p/15674134.html

标签:Python,字符串,前缀,r,u
0
投稿

猜你喜欢

  • python程序的打包分发示例详解

    2023-09-26 15:25:27
  • Python使用pylab库实现画线功能的方法详解

    2021-02-03 18:26:07
  • django template实现定义临时变量,自定义赋值、自增实例

    2021-05-24 09:16:46
  • 详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    2021-08-07 00:06:22
  • Python 打印自己设计的字体的实例讲解

    2021-04-24 14:45:21
  • python3中str(字符串)的使用教程

    2021-07-19 00:28:47
  • 使用ob系列函数实现PHP网站页面静态化

    2023-11-15 03:26:05
  • Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解

    2022-03-26 10:52:57
  • 带你了解Python妙开根号的三种方式

    2021-10-18 08:27:56
  • Python2与Python3的区别点整理

    2022-02-23 07:44:46
  • 解析:MySQL对“服务器端光标”的限制

    2008-11-27 16:22:00
  • 详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)

    2022-06-23 16:42:41
  • Python Playwright的使用详解

    2021-10-10 03:30:44
  • python中format函数如何使用

    2022-06-18 06:50:41
  • python中文件操作与异常的处理图文详解

    2021-09-04 16:04:33
  • 只用40行Python代码就能写出pdf转word小工具

    2021-11-03 18:02:00
  • 关于python中readlines函数的参数hint的相关知识总结

    2023-12-31 02:37:12
  • flask的orm框架SQLAlchemy查询实现解析

    2021-03-25 08:47:51
  • python打印文件的前几行或最后几行教程

    2022-04-30 01:14:09
  • Python @property装饰器原理解析

    2022-02-19 20:28:05
  • asp之家 网络编程 m.aspxhome.com