正则表达式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() 挂起 - 如果您无法逐行阅读怎么办