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解释执行原理分析
Aug 22 Python
跟老齐学Python之正规地说一句话
Sep 28 Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
浅析Python四种数据类型
Sep 26 Python
对python中的argv和argc使用详解
Dec 15 Python
pow在python中的含义及用法
Jul 11 Python
Python使用python-docx读写word文档
Aug 26 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
python 实现目录复制的三种小结
Dec 04 Python
python3中确保枚举值代码分析
Dec 02 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添加xml文档内容的方法
2015/01/23 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
Nodejs实现用户注册功能
2019/04/14 NodeJs
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
详解python中requirements.txt的一切
2017/03/03 Python
python学习入门细节知识点
2018/03/29 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
python将txt文件读取为字典的示例
2018/12/22 Python
详解python中的数据类型和控制流
2019/08/08 Python
python time()的实例用法
2020/11/03 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
中东奢侈品市场:Coveti
2019/05/12 全球购物
技术总监管理岗位职责
2014/03/09 职场文书
驻村工作先进事迹
2014/08/14 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
先进工作者事迹材料
2014/12/23 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
Python绘制散乱的点构成的图的方法
2022/04/21 Python
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL