正则表达式re.findall

Posted 向阳-Y.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式re.findall相关的知识,希望对你有一定的参考价值。

正则表达式的基本用法举例

import re  #导入re模块

在网页源代码中提取出标签内的内容:

title = re.findall('<span class=title>(.*?)</span>',html_data)[0]

抓取windows._playinfo_=后面的内容(".“在python中有特殊含义,所以需要用”\\"进行转义)

data = re.findall('<script>windows\\._playinfo_=(.*?)</script>,html_data)[0]

html_data为网页源代码数据,[0]表示取第一个值,(.*?)表示进行匹配内容

.*?和.*的区别对比
.\\*?是非贪婪的,匹配的越少越好
.\\*是贪婪的,匹配的越广越好
对比:

>>> print(re.findall('a(.*?)b','a123ba123b'))
['123', '123']
>>> print(re.findall('a(.*)b','a123ba123b'))
['123ba123']

[例] 在python软件中利用正则表达式替换值

例如,我们需要将如下代码的格式转换为字典

a:苹果
b:香蕉
c:菠萝
d:桃子

字典格式为:

"a":"苹果",
"b":"香蕉",
"c":"菠萝",
"d":"桃子"

数据量少可以进行手动添加。数据量多可以用正则表达式进行替换:
Ctri+r打开替换工具

(.*?):(.*)   #匹配到格式上

"($1)":"($2)",   #$1表示第一个值,$2表示第二个值

相关文章
正则表达式 re.findall 用法
正则表达式(.*?)和(.*)的区别

import pprint格式化输出模块
目前data为字符串,使用pprint可以格式化

以上是关于正则表达式re.findall的主要内容,如果未能解决你的问题,请参考以下文章

python 正则(re.compile()/re.findall())

正则表达式 re.search 和 re.findall 的区别

使用 re.findall 在正则表达式中捕获命名组

正则表达式 re.findall() 挂起 - 如果您无法逐行阅读怎么办

是否有 Python 的 re.findall/re.finditer(迭代正则表达式结果)的 Perl 等价物?

Python之正则re模块 --- findall()详解