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 (2)
Oct 31 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
python脚本内运行linux命令的方法
Jul 02 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
python中验证码连通域分割的方法详解
Jun 04 Python
python cs架构实现简单文件传输
Mar 20 Python
Python requests库用法实例详解
Aug 14 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
vscode调试django项目的方法
Aug 06 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 Python
Python绘制地图神器folium的新人入门指南
May 23 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
PHP+ajax 无刷新删除数据
2010/02/20 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
js实现圆盘记速表
2015/08/03 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
vue如何搭建多页面多系统应用
2020/06/17 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
python简单的函数定义和用法实例
2015/05/07 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
少儿节目主持串词
2014/04/02 职场文书
刊首寄语大全
2014/04/11 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
担保贷款承诺书
2015/04/30 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸