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显示天气预报
Mar 02 Python
在Python中使用Mako模版库的简单教程
Apr 08 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
Python爬虫中urllib库的进阶学习
Jan 05 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
把pandas转换int型为str型的方法
Jan 29 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
Python代码需要缩进吗
Jul 01 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
详解Scrapy Redis入门实战
Nov 18 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
传智播客学习之java 反射
2009/11/22 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
Python爬虫工程师面试问题总结
2018/03/22 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
基于python实现地址和经纬度转换
2020/05/19 Python
什么是python的id函数
2020/06/11 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
导游个人求职信范文
2014/03/23 职场文书
普通话演讲稿
2014/09/03 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
python中requests库+xpath+lxml简单使用
2021/04/29 Python
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电