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

作者:shichen2014 时间:2021-05-04 18:29:27 

本文实例讲述了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,字符串,用法
0
投稿

猜你喜欢

  • Python 流媒体播放器的实现(基于VLC)

    2023-09-10 07:22:27
  • Internet Explorer 8 Beta2 功能预览

    2008-07-29 13:20:00
  • Mysql数据表中的蠕虫复制使用方法

    2024-01-24 15:06:06
  • ASP中DLL的调试环境配置全攻略

    2007-09-27 13:20:00
  • keras 特征图可视化实例(中间层)

    2021-12-05 22:54:46
  • 原创一个js对联广告类(兼容FireFox)

    2008-08-01 18:08:00
  • PyCharm 常用快捷键和设置方法

    2022-04-09 01:40:59
  • vue实现移动端轻量日期组件不依赖第三方库的方法

    2024-05-29 22:29:03
  • PHP观察者模式原理与简单实现方法示例

    2024-05-03 15:49:15
  • 深入浅出解析mssql在高频,高并发访问时键查找死锁问题

    2024-01-29 02:32:54
  • python3 logging日志封装实例

    2022-05-23 08:27:52
  • Python判断对象是否为文件对象(file object)的三种方法示例

    2021-05-27 09:46:17
  • pandas.dataframe按行索引表达式选取方法

    2021-10-28 20:26:32
  • Vue 通过自定义指令回顾v-内置指令(小结)

    2023-07-02 16:56:42
  • Python新版极验验证码识别验证码教程详解

    2022-03-07 01:02:55
  • python实现八大排序算法(1)

    2022-05-20 08:17:47
  • Python实现批量生成,重命名和删除word文件

    2022-12-03 05:51:33
  • Python3.7安装keras和TensorFlow的教程图解

    2022-09-05 13:23:00
  • Django vue前后端分离整合过程解析

    2022-04-07 21:01:04
  • javascript实现瀑布流动态加载图片原理

    2024-06-05 09:13:54
  • asp之家 网络编程 m.aspxhome.com