一、re.findall() 方法
重点内容:
re.findall(pattern, string, flags=0)
作用: 扫描整个string字符串,返回所有与pattern匹配的列表
参数:
pattern: 正则表达式
string: 从那个字符串中查找
flags: 匹配模式
返回:
返回string中与pattern匹配的结果列表
举例:
re.findall("\d","chuan1zhi2") >> ["1","2"]
rs = re.findall("a.+bc", "a\nbc", re.DOTALL)
print(rs)
与
rs = re.findall("a(.+)bc", "a\nbc", re.DOTALL)
print(rs)
的结果并不一样
findall() 特点:
如果正则表达式中有没有()则返回与整个正则匹配的列表
如果正则表达式中有(),则返回()中匹配的内容列表, 小括号两边东西都是负责确定提取数据所在位置.
二、正则表达式中的r原串的使用
rs = re.findall("a\nb","a\nb")
print(rs)
rs = re.findall("a\\nb","a\\nb")
print(rs)
rs = re.findall("a\\\\nb","a\\nb")
print(rs)
rs = re.findall(r"a\nb","a\nb")
print(rs)
正则中使用r原始字符串, 能够忽略转义符号带来的影响
待匹配的字符串中有多少个\,r原串正则中就添加多少个\即可
一个案例:提取最新的疫情数据的json字符串
# 1. 导入相关模块
import requests
from bs4 import BeautifulSoup
import re
import json
# 2. 发送请求, 获取疫情首页内容
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page = response.content.decode()
print(home_page)