re.findall(r"\d+\.?\d*", i)解释一下这段代码
时间: 2023-09-22 10:12:03 浏览: 94
这段代码是使用 Python 中的 re 模块,对字符串 i 进行匹配。具体来说,re.findall() 方法是用来查找字符串中所有满足某个规则的子串,并以列表形式返回。其中,r"\d \.?\d*" 是一个正则表达式,它的含义是匹配一个数字(\d)后跟一个空格,再跟一个可选的小数点(\.?)和任意个数字(\d*)。因此,这段代码的作用是在字符串 i 中查找所有类似于 "1.23" 或 "4" 的数字。
相关问题
import requests # 导入网页请求库 from bs4 import BeautifulSoup # 导入网页解析库 import pandas as pd import numpy as np import re import matplotlib.pyplot as plt from pylab import mpl danurl=[]; def get_danurl(surl): r=requests.get(surl) r.encoding='utf-8' demo=r.text soup=BeautifulSoup(demo,"html.parser") wangzhi=soup.find_all('a',string=re.compile('杭州市小客车增量指标竞价情况')) list3=' '.join('%s' %id for id in wangzhi) res_url=r'href="(.*?)"' alink = re.findall(res_url, list3, re.I | re.S | re.M) return alink def get_page(url): mydict={} r=requests.get(url) r.encoding='utf-8' demo=r.text #print(demo) soup=BeautifulSoup(demo,"html.parser") try: duan2=soup.find_all('p',class_="p")[0].text duan3=soup.find_all('p',class_="p")[2].text pattern3 = re.compile(r'(?<=个人)\d+.?\d*') gerenbj=pattern3.findall(duan2)[0] jingjiariqi=soup.find_all('p',class_="p")[0].text.split('。')[0] except IndexError: duan2=soup.find_all('p',class_="p")[2].text duan3=soup.find_all('p',class_="p")[4].text pattern3 = re.compile(r'(?<=个人)\d+.?\d*') gerenbj=pattern3.findall(duan2)[0] jingjiariqi=soup.find_all('p',class_="p")[2].text.split('。')[0] duan1=soup.find_all('p')[1].text pattern1 = re.compile(r'(?<=个人增量指标)\d+.?\d*') gerenzb=pattern1.findall(duan1)[0] pattern2 = re.compile(r'(?<=单位增量指标)\d+.?\d*') danweizb=pattern2.findall(duan1)[0] pattern4 = re.compile(r'(?<=单位)\d+.?\d*') danweibj=pattern4.findall(duan2)[0] pattern5 = re.compile(r'(?<=个人)\d+.?\d*') mingerencjj=pattern5.findall(duan3)[0] avegerencjj=pattern5.findall(duan3)[1] pattern6 = re.compile(r'(?<=单位)\d+.?\d*') mindanweicjj=pattern6.findall(duan3)[0] avedanweicjj=pattern6.findall(duan3)[1] pattern7 = re.compile(r'(?<=成交)\d+.?\d*') mingerencjs=pattern7.findall(duan3)[0] mindanweicjs=pattern7.findall(duan3)[1] 解释代码
这段代码是用来爬取杭州市小客车增量指标竞价情况的数据。首先导入了requests库和BeautifulSoup库,用于进行网页请求和解析。然后定义了一个函数`get_danurl`,用于获取竞价情况网页的链接。函数中首先发送一个GET请求获取网页内容,然后使用BeautifulSoup进行解析,找到所有包含"杭州市小客车增量指标竞价情况"文本的链接,并通过正则表达式提取出链接地址。接下来是`get_page`函数,用于获取具体页面的数据。函数中同样发送一个GET请求获取网页内容,并使用BeautifulSoup进行解析。然后通过一些规则提取出所需的数据,如个人增量指标、单位增量指标、个人竞价、单位竞价、个人成交、单位成交等。最后返回一个包含这些数据的字典。
解释代码s = '<img width="160" height="224" data-src="(.*?)" src=' +\ '.*?<span class="bt-l">(.+?)</span>.*?<span class="bt-r">(\d.\d)?</span>' + \ ".*?<span>导演:(.*?)</span>" + ".*?<span>主演:(.*?)</span>" + ".*?<span>类型:(.*?)</span>"+\ ".*?<span>地区:(.*?)</span>" + ".*?<span>语言:(.*?)</span>" + ".*?<span>片长:(.*?)</span>" pattern = re.compile(s,re.S) items = re.findall(pattern, html) for outer in range(len(items)): items[outer] = list(items[outer]) for i in range(len(items[outer])): if items[outer][i] == "": items[outer][i] = "暂无信息" else: items[outer][i] = items[outer][i].replace("·","·") destinationPath = "items.json" fd = open(destinationPath,"w+",encoding='utf-8') json.dump(items,fd) fd.close()
这段代码是用正则表达式解析HTML页面,提取其中的电影信息,并将结果存储为一个JSON文件。具体来说,正则表达式模式中包含了多个匹配项,用于匹配电影的图片、名称、评分、导演、主演、类型、地区、语言、片长等信息。然后,使用re.findall()函数来查找所有匹配项,并将结果存储在items数组中。接着,对于每一个匹配项,将其中的空信息替换为"暂无信息",并将"·"替换为"·"。最后,将items数组中的结果存储为一个JSON文件。