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 相关文章推荐
Python是编译运行的验证方法
Jan 30 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
Python3.6简单反射操作示例
Jun 14 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
opencv python 基于KNN的手写体识别的实例
Aug 03 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
Python实现计算对象的内存大小示例
Jul 10 Python
python issubclass 和 isinstance函数
Jul 25 Python
Python-接口开发入门解析
Aug 01 Python
解决python使用list()时总是报错的问题
May 05 Python
Python join()函数原理及使用方法
Nov 14 Python
python中time、datetime模块的使用
Dec 14 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
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
Prototype Function对象 学习
2009/07/12 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
谈谈如何手动释放Python的内存
2016/12/17 Python
python 统计代码行数简单实例
2017/05/04 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
python获取url的返回信息方法
2018/12/17 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
法学专业毕业生自荐信范文
2013/12/18 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
音乐课外活动总结
2015/05/09 职场文书
企业培训简报范文
2015/07/20 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技