Python原始字符串(raw strings)用法实例

 更新时间:2014年10月13日 09:17:09   投稿:shichen2014  
这篇文章主要介绍了Python原始字符串(raw strings)用法实例,在使用Python进行字符串处理的过程中非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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数据分析基础之pandas中loc()与iloc()的介绍与区别介绍

    python数据分析基础之pandas中loc()与iloc()的介绍与区别介绍

    我们经常在寻找数据的某行或者某列的时常用到Pandas中的两种方法iloc和loc,两种方法都接收两个参数,第一个参数是行的范围,第二个参数是列的范围,这篇文章主要介绍了python数据分析基础之pandas中loc()与iloc()的介绍与区别,需要的朋友可以参考下
    2024-07-07
  • django双下划线的具体使用

    django双下划线的具体使用

    双下划线约定通常用于执行一些特定的查询操作,本文主要介绍了django双下划线的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Python pandas常用函数详解

    Python pandas常用函数详解

    这篇文章主要介绍了Python pandas常用函数详解,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 一文带你搞懂Python中的文件操作

    一文带你搞懂Python中的文件操作

    这篇文章主要为大家详细介绍了Python中常见的文件操作的相关资料,文中的示例代码讲解详细,对我们学习Python有一定的帮助,感兴趣的可以了解一下
    2022-11-11
  • 使用PyQtGraph绘制精美的股票行情K线图的示例代码

    使用PyQtGraph绘制精美的股票行情K线图的示例代码

    这篇文章主要介绍了使用PyQtGraph绘制精美的股票行情K线图的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • pyEcharts安装及详细使用指南(最新)

    pyEcharts安装及详细使用指南(最新)

    这篇文章主要介绍了pyEcharts安装及详细使用指南(最新),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python中调用和运行其他.py文件的多种实现方法

    Python中调用和运行其他.py文件的多种实现方法

    本文介绍了在Python中调用和运行其他.py文件的四种方法:subprocess模块、exec函数、import语句和os.system函数,每种方法都有其适用场景和优缺点
    2025-02-02
  • openCV入门学习基础教程第二篇

    openCV入门学习基础教程第二篇

    人脸识别,物体检测,OpenCV是基石,下面这篇文章主要给大家介绍了关于openCV入门学习基础教程的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • python爬虫获取京东手机图片的图文教程

    python爬虫获取京东手机图片的图文教程

    下面小编就为大家分享一篇python爬虫获取京东手机图片的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Python学习笔记之集合的概念和简单使用示例

    Python学习笔记之集合的概念和简单使用示例

    这篇文章主要介绍了Python学习笔记之集合的概念和简单使用,涉及Python集合的定义、查找、添加、删除等相关操作技巧与注意事项,需要的朋友可以参考下
    2019-08-08

最新评论