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多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python脚本之一键移动自定格式文件方法实例
Sep 02 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
Python中的With语句的使用及原理
Jul 29 Python
python Cartopy的基础使用详解
Nov 01 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
js 提交和设置表单的值
2008/12/19 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python中import reload __import__的区别详解
2017/10/16 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
django框架自定义用户表操作示例
2018/08/07 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
前台接待岗位职责
2013/12/03 职场文书
难忘的一天教学反思
2014/04/30 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书