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

1.u(U)

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

# coding: utf-8

如果不加这一行,有时就会出现如下所示的编码解析错误:

SyntaxError: Non-ASCII character '\xe5' in file main.py on line 86, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

参考文献

  • [1] https://www.python.org/
  • [2] Martelli A, Ravenscroft A, Ascher D. Python cookbook[M]. " O'Reilly Media, Inc.", 2005.

Python:Python字符串中的r、u和转义字符的更多相关文章

  1. python之字符串中有关%d,%2d,%02d的问题

    python之字符串中有关%d,%2d,%02d的问题 在python中,通过使用%,实现格式化字符串的目的.(这与c语言一致) 其中,在格式化整数和浮点数时可以指定是否补0和整数与小数的位数. 首先 ...

  2. python 判断字符串中是否只有中文字符

    python 判断字符串中是否只有中文字符 学习了:https://segmentfault.com/q/1010000007898150 def is_all_zh(s): for c in s: ...

  3. python判断字符串中是否包含子字符串

    python判断字符串中是否包含子字符串 s = '1234问沃尔沃434' if s.find('沃尔沃') != -1:     print('存在') else:     print('不存在' ...

  4. python 统计字符串中指定字符出现次数的方法

    python 统计字符串中指定字符出现次数的方法: strs = "They look good and stick good!" count_set = ['look','goo ...

  5. Python 去除字符串中的空行

    Python 去除字符串中的空行 mystr = 'adfa\n\n\ndsfsf' print("".join([s for s in mystr.splitlines(True ...

  6. Python访问字符串中的值

    Python访问字符串中的值: 1.可以使用索引下标进行访问,索引下标从 0 开始: # 使用索引下标进行访问,索引下标从 0 开始 strs = "ABCDEFG" print( ...

  7. Python 访问字符串中的值

    Python 访问字符串中的值 Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用.高佣联盟 www.cgewang.com Python 访问子字符串,可以使用方括号来 ...

  8. [Python正则表达式] 字符串中xml标签的匹配

    现在有一个需求,比如给定如下数据: 0-0-0 0:0:0 #### the 68th annual golden globe awards #### the king s speech earns ...

  9. Python统计字符串中的中英文字符、数字空格,特殊字符

    # -*- coding:utf8 -*- import string from collections import namedtuple def str_count(s): '''找出字符串中的中 ...

  10. Python 在字符串中处理html 和xml

    问题: 想将HTML 或者XML 实体如&entity; 或&#code; 替换为对应的文本.再者,你需要转换文本中特定的字符(比如<, >, 或&). 解决方案: ...

随机推荐

  1. Python将依赖包导出到requirements.txt文件

    代码 # 查询环境中已经安装的库 pip list # 将所有依赖库导出到 requirements.txt 文件 pip freeze > requirements.txt

  2. MogDB/openGauss 3.0 扩容及缩容

    MogDB/openGauss 3.0 扩容及缩容 本文出处:https://www.modb.pro/db/452139 一.概述 背景信息 gs_expansion 工具对数据库的备机进行扩容,支 ...

  3. 什么是MurmurHash

    MurmurHash简介 MurmurHash是一种非加密散列函数,名称来自两个基本操作,乘法(MU)和旋转(R).与加密散列函数不同,它不是专门设计为难以被对手逆转,因此不适用于加密目的.在2018 ...

  4. k8s之operator

    背景 数字经济的兴起推动了云计算.物联网.大数据行业的快速蓬勃发展,对数据中心提出了更高的要求,同时,用户对于数据库运维自动化的需求越来越高,数据库即服务的需求越来越强烈. 随着k8s的普及以及云原生 ...

  5. CentOS 7快速安装配置 Odoo 12

    > Coding > CentOS 7快速安装配置 Odoo 12 CentOS 7快速安装配置 Odoo 12 Coding  Alan  11个月前 (10-19)  4777次浏览  ...

  6. js 是单线程吗?

    前言 在html5中,js中允许操作多个线程执行,但是不能操作dom元素,这是一个痛点. 但是在mvvm依然存在很大的作用力,因为我们只需要操作数据,在操作数据的时候委托机制在主线程中就实现了对dom ...

  7. PolarDB开源未来将有哪些新动向?阿里云数据库开源负责人来解答

    简介: 在10月25日由阿里云开发者社区.PolarDB开源社区.infoQ联合举办的「开源人说」第三期--<数据库PolarDB专场>沙龙上,阿里云数据库开源负责人.数据库资深技术专家王 ...

  8. Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架

    简介: 经过社区多位成员的贡献,Koordinator 0.6 版本正式发布.相较于上一个版本 0.5,新版本进一步完善了 CPU 精细化编排能力,更好的兼容原生用法:支持了资源预留的能力(Reser ...

  9. 浅谈分布式一致性:Raft 与 SOFAJRaft

    简介: SOFAJRaft已开源 作者 | 家纯来源 | 阿里技术公众号 一 分布式共识算法 (Consensus Algorithm) 1 如何理解分布式共识? 多个参与者针对某一件事达成完全一致: ...

  10. Maxcompute造数据-方法详解

    简介: 造一点模拟数据的方法 概述 造数据在一些奇怪的场合会被用到.一般我们是先有数据才有基于数据的应用场合,但是反过来如果应用拿到另外一个场景,没有数据功能是没有方法演示的.一般较为真实的数据,脱敏 ...