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中的模块和包概念介绍
Apr 13 Python
探究Python中isalnum()方法的使用
May 18 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
python实现海螺图片的方法示例
May 12 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
Django中的session用法详解
Mar 09 Python
Django跨域请求原理及实现代码
Nov 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
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP解析RSS的方法
2015/03/05 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python访问抓取网页常用命令总结
2017/04/11 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python3实现随机数
2018/06/25 Python
Python中按值来获取指定的键
2019/03/04 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
电子专业自荐信
2014/07/01 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
新闻稿件写作范文
2015/07/18 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
使用Redis实现分布式锁的方法
2022/06/16 Redis