ad

打开《Python 可视化数据分析》_学会挖掘大数据的价值_2.2.3 原始字符串

网友投稿 130 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第2章,第2节,李迎著。

2.2.3 原始字符串

在操作字符串的过程中经常见到一些这样的案例,在字符串的前面+ “r” 的形 式,比如: print(r'Hello\n'+“lili”+r'\n!!), 输出的结果是:Hello\nlili \n!,而且随着 学习的深入,这样的字符串还很多。这里需要把这个话题谈论一下,有兴趣的读者 可以深入的学习。这种在前加 “r” 的字符串被称为原始字符串,原始字符串的产生 正是由于有正则表达式的存在,正则表达式是用来检索、替换那些符合某个模式(规 则)的文本,在撰写爬虫的模块中经常使用。Python 中的正则表达式简单又强大,但需要导入re 模块使用。

当我们使用正则表达式的时候需要使用原始字符,是因为ASCI 字符和正则表 达式特殊字符间会产生冲突。比如,特殊符号“\b” 在 ASCⅡ 字符中代表退格键, 但同时“\b”也是一个正则表达式的特殊符号,代表“匹配一个单词边界”。为了让 re 编译器把两个字符 “b” 当成想要表达的字符串,而不是一个退格键,就需要用另一个反斜线对它进行转义,即可以这样写: “Nb”。但这样做会把问题复杂化, 特别是当正则表达式字符串里有很多特殊字符时,就更容易令人困惑。而原始字符 串,它的使用可以简化正则表达式的复杂程度问题。现在很多 Python 程序员在定义 正则表达式时都只使用原始字符串,下面通过示例来简要说明退格键“\b” 和正则

表达式“\b” (包含或不包含原始字符串)之间的区别:

打开《Python 可视化数据分析》_学会挖掘大数据的价值_2.2.3 原始字符串

>>>a=re.match('\aalow','alow')

>>>if a is not None:a.group() >>>a=re.match('\\aalow','alow')

>>>if a is not None:a.group() 'blow'

>>>a=re.match(r'\aalow','alow')

>>>if a is not None;m.group() 'blow'

在这几行代码中可以看到正则表达式里使用 “d”,

#没有匹配

#用\转义后,实现匹配

#改用原始字符串

没用原始字符串,也没出现

什么问题。那是因为 ASCIⅡ 码里没有对应的特殊字符,所以正则表达式编译器能够 知道这里所指的是一个十进制数字。原始字符串的这个特性让一些工作变得非常方 便,比如正则表达式的创建(详见文档的re 模块)。正则表达式是一些定义了高级 搜索匹配方式的字符串,通常是由代表字符、分组、匹配信息、变量名和字符类等 特殊符号组成。正则表达式模块已经包含了足够用的符号。但当需要插入额外的符 号使特殊字符成为普通字符时,问题就出现了,出现“字符数字”问题,这时原始字符串就可以使用了。

原始字符串,除了在引号前面加字母 “r” 外,跟普通字符串有着几乎完全相同 的语法,这个 “r” 可以是小写也可以是大写,唯一的要求是必须紧靠在第一个引号前。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《OpenStack 云平台-部署与高可用实战》_7.2.3 MapReduce与 HBase
下一篇:打开《Python 编程与应用实践》_成为Python大佬_6.1 什么是对象
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×