Python原始字符串(raw strings)用法实例


Posted in Python onOctober 13, 2014

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
python使用htmllib分析网页内容的方法
May 08 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
python算法与数据结构之冒泡排序实例详解
Jun 22 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
基于Python测试程序是否有错误
May 16 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
python中__call__方法示例分析
Oct 11 #Python
python多重继承实例
Oct 11 #Python
Python之PyUnit单元测试实例
Oct 11 #Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 #Python
跟老齐学Python之编写类之四再论继承
Oct 11 #Python
Python使用MySQLdb for Python操作数据库教程
Oct 11 #Python
跟老齐学Python之编写类之三子类
Oct 11 #Python
You might like
Laravel学习教程之View模块详解
2017/09/18 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
vue实现图片上传功能
2020/05/28 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
python的迭代器与生成器实例详解
2014/07/16 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
小学生自我评价范例
2013/09/24 职场文书
应聘护士求职信
2014/07/21 职场文书
小学运动会报道稿
2014/10/04 职场文书
实习单位证明范例
2014/11/17 职场文书
2014年招商工作总结
2014/11/22 职场文书
获奖感言怎么写
2015/07/31 职场文书
Django实现聊天机器人
2021/05/31 Python