我是靠谱客的博主 踏实小霸王,最近开发中收集的这篇文章主要介绍Python r 原始字符串(raw strings)的用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

Python r 原始字符串(raw strings)的用法

核心笔记 : Python 原始字符串(raw strings)的用法
你可能已经看到前面关于原始字符串用法的一些例子了。原始字符串的产生正是由于有正则表
达式的存在。原因是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 里没有对应的特殊字符,所以正则表达式编译器能够知道你指的是一个十进制数字。



原始字符串的这个特性让一些工作变得非常的方便,比如正则表达式的创建(详见文档的re模块)。正则表达式是一些定义了高级搜索匹配方式的字符串,通常是由代表字符、分组、匹配信息、变量名和字符类等的特殊符号组成。正则表达式模块已经包含了足够用的符号。但当你必须插入额外的符号来使特殊字符表现的像普通字符的时候,你就陷入了“字符数字”的泥潭!这时原始字符串就会派上用场了。

除了原始字符串符号(引号前面的字母“r”)以外,原始字符串跟普通字符串有着几乎完全相同的语法。这个'r'可以是小写也可以是大写,唯一的要求是必须紧靠在第一个引号前。在3个例子的第1个例子里面,我们需要一个反斜杠加一个“n”来而不是一个换行符。

>>> 'n'
'n'
>>> print 'n' 

>>> r'n'
'\n'
>>> print r'n'
n




接下来的例子里,我们打不开我们的README文件了,为什么?因为't'和'r'被当成不在我们的文件名中的特殊符号,但它们实际上是文件路径中的4个独立的字符。

>>> f = open('C:windowstempreadme.txt', 'r') Traceback (most recent call last):
File "<stdin>", line 1, in ?   
f = open('C:windowstempreadme.txt', 'r')
IOError: [Errno 2] No such file or directory: 'C:\win- dows\tempreadme.txt'
>>> f = open(r'C:windowstempreadme.txt', 'r')
>>> f.readline()
'Table of Contents (please check timestamps for last update!)n'
>>> f.close()


转自: http://hi.baidu.com/setcookie/item/bb5c1932c76aa0159cc65e3b

最后

以上就是踏实小霸王为你收集整理的Python r 原始字符串(raw strings)的用法的全部内容,希望文章能够帮你解决Python r 原始字符串(raw strings)的用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部