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 list 合并连接字符串的方法
Mar 09 Python
python模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
Python实现类继承实例
Jul 04 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
Python assert语句的简单使用示例
Jul 28 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
python操作xlsx格式文件并读取
Jun 02 Python
关于python中模块和重载的问题
Nov 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也可以?成Shell Script
2006/10/09 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
JS数据类型分类及常用判断方法
2020/11/19 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
Django 路由层URLconf的实现
2019/12/30 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
怎么快速自学python
2020/06/22 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
《美丽的田园》教学反思
2014/03/01 职场文书
地球一小时倡议书
2014/04/15 职场文书
家长对老师的评语
2014/04/18 职场文书
应届生自荐信
2014/06/30 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
联谊会开场白
2015/06/01 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS