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 03 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
python查询sqlite数据表的方法
May 08 Python
Python sys.argv用法实例
May 28 Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 Python
对Python中gensim库word2vec的使用详解
May 08 Python
Python实现的读写json文件功能示例
Jun 05 Python
Django组件之cookie与session的使用方法
Jan 10 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
Python基础之数据结构详解
Apr 28 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 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严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
2018/05/15 NodeJs
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Python简单实现控制电脑的方法
2018/01/22 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
python连接PostgreSQL过程解析
2020/02/09 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
优秀驾驶员先进事迹材料
2014/05/04 职场文书
学风建设演讲稿
2014/09/12 职场文书
银行先进个人总结
2015/02/15 职场文书
教师个人自我评价
2015/03/04 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
交通事故被告答辩状
2015/05/22 职场文书
校园广播稿范文
2015/08/19 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL