Python原始字符串(raw strings)用法实例
admin
2023-07-31 02:12:03
0

本文实例讲述了Python原始字符串(raw strings)用法,分享给大家供大家参考。具体如下:
 
Python原始字符串的产生正是由于有正则表达式的存在。原因是ASCII 字符和正则表达式特殊字符间所产生的冲突。比如,特殊符号“\\b”在ASCII 字符中代表退格键,但同时“\\b”也是一个正则表达式的特殊符号,代表“匹配一个单词边界”。

为了让RE 编译器把两个字符“\\b”当成你想要表达的字符串,而不是一个退格键,你需要用另一个反斜线对它进行转义,即可以这样写:“\\\\b”。

但这样做会把问题复杂化,特别是当你的正则表达式字符串里有很多特殊字符时,就更容易令人困惑了。一般来说,原始字符串经常被用于简化正则表达式的复杂程度。

事实上,很多Python 程序员在定义正则表达式时都只使用原始字符串。

下面的例子用来说明退格键“\\b” 和正则表达式“\\b”(包含或不包含原始字符串)之间的区别:

复制代码 代码如下:>>> m = re.match(\’\\bblow\’, \’blow\’) # backspace, no match #退格键,没有匹配>>> if m is not None: m.group()

>>> m = re.match(\’\\\\bblow\’, \’blow\’) # escaped \\, now it works #用\\转义后,现在匹配了
>>> if m is not None: m.group()

\’blow\’
>>> m = re.match(r\’\\bblow\’, \’blow\’) # use raw string instead #改用原始字符串>>> if m is not None: m.group()

\’blow\’
你可能注意到我们在正则表达式里使用“\\d”,没用原始字符串,也没出现什么问题。那是因为ASCII 里没有对应的特殊字符,所以正则表达式编译器能够知道你指的是一个十进制数字。

原始字符串的这个特性让一些工作变得非常的方便,比如正则表达式的创建。正则表达式是一些定义了高级搜索匹配方式的字符串,通常是由代表字符、分组、匹配信息、变量名和字符类等的特殊符号组成。正则表达式模块已经包含了足够用的符号。但当你必须插入额外的符号来使特殊字符表现的像普通字符的时候,你就陷入了“字符数字”的泥潭!这时原始字符串就会派上用场了。

除了原始字符串符号(引号前面的字母“r”)以外,原始字符串跟普通字符串有着几乎完全相同的语法。这个\’r\’可以是小写也可以是大写,唯一的要求是必须紧靠在第一个引号前。在3个例子的第1个例子里面,我们需要一个反斜杠加一个“n”来而不是一个换行符。

复制代码 代码如下:>>> \’\\n\’
\’\\n\’
>>> print \’\\n\’
>>> r\’\\n\’
\’\\\\n\’
>>> print r\’\\n\’
\\n
接下来的例子里,我们打不开我们的README文件了,为什么?因为\’\\t\’和\’\\r\’被当成不在我们的文件名中的特殊符号,但它们实际上是文件路径中的4个独立的字符。
复制代码 代码如下:>>> f = open(\’C:\\windows\\temp\\readme.txt\’, \’r\’) Traceback (most recent call last):
File \”\”, line 1, in ?
f = open(\’C:\\windows\\temp\\readme.txt\’, \’r\’)IOError: [Errno 2] No such file or directory: \’C:\\\\win- dows\\\\temp\\readme.txt\’
>>> f = open(r\’C:\\windows\\temp\\readme.txt\’, \’r\’)>>> f.readline()
\’Table of Contents (please check timestamps for last update!)\\n\’
>>> f.close()

希望本文所述对大家的Python程序设计有所帮助。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...