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

 更新时间:2021年12月11日 09:57:37   作者:Orion's Blog  
在Python中,字符串前面我们经常看到会加一些前缀,例如u、r、b、f。这篇文章将带大家简单了解一下字符串前加r(R)或u/(U)的前缀的区别,快来跟随小编一起学习吧

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.

到此这篇关于浅析Python字符串中的r和u的区别的文章就介绍到这了,更多相关Python字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pandas中DataFrame的常用用法分享

    Pandas中DataFrame的常用用法分享

    Pandas是Python中最流行的数据分析和处理工具之一,它提供了一个名为DataFrame的数据结构,可以被认为是一个二维表格或电子表格。本文主要来和大家分享一下Pandas中DataFrame的常用用法,希望对大家有所帮助
    2023-04-04
  • 小结Python的反射机制

    小结Python的反射机制

    这篇文章主要介绍了Python的反射机制,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • Python3基于print打印带颜色字符串

    Python3基于print打印带颜色字符串

    这篇文章主要介绍了Python3使基于print打印带颜色字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • python基于plotly实现画饼状图代码实例

    python基于plotly实现画饼状图代码实例

    这篇文章主要介绍了python基于plotly实现画饼状图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python贪吃蛇小游戏实例分享

    Python贪吃蛇小游戏实例分享

    这篇文章主要为大家详细介绍了Python贪吃蛇小游戏实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 详解python selenium 爬取网易云音乐歌单名

    详解python selenium 爬取网易云音乐歌单名

    这篇文章主要介绍了python selenium爬取网易云音乐歌单名,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • python实现多线程的两种方式

    python实现多线程的两种方式

    这篇文章主要为大家详细介绍了python实现多线程的两种方式,感兴趣的朋友可以参考一下
    2016-05-05
  • Python基于callable函数检测对象是否可被调用

    Python基于callable函数检测对象是否可被调用

    这篇文章主要介绍了Python基于callable函数检测对象是否可被调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python中__set_name__的具体使用

    python中__set_name__的具体使用

    在Python中,我们可以通过__set_name__方法来实现一些特殊的操作,本文主要介绍如何在Python中实现__set_name__方法,并且给出一些实际应用的示例,感兴趣的可以了解一下
    2024-01-01
  • python33 urllib2使用方法细节讲解

    python33 urllib2使用方法细节讲解

    Python 标准库中有很多实用的工具类,这里总结一些 urllib2 的使用细节:Proxy 的设置、Timeout 设置、在 HTTP Request 中加入特定的 、Cookie、使用 HTTP 的 PUT 和 DELETE 方法
    2013-12-12

最新评论