sb=re.compile(r'([^-]*)') #城市字段精简为区分到市级 def old_job_city(): sql="select j_id,area from boss" db = dbcon.dbc().conn() cs = db.cursor(); try: # 执行sql语句 cs.execute(sql) # 提交到数据库执行 db.commit() result = cs.fetchall(); except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close() return result joblist=old_job_city() def new_job_city(city,id): sql="update boss set area='%s' where j_id='%d'"%(city,id) db = dbcon.dbc().conn() print(sql) ds = db.cursor(); n = 0 try: # 执行sql语句 n = ds.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close() return n for job in joblist: city=re.findall(sb, job[1]) if len(city)>2: new_job_city(city[0],job[0]) else: continue
时间: 2024-02-15 12:11:35 浏览: 195
这段代码的作用是从数据库中查询职位的城市信息,将城市字段精简为区分到市级,然后更新到数据库中。具体来说,它首先定义了一个正则表达式 `sb`,用于匹配城市信息中的非 `-` 字符串。然后通过 `old_job_city()` 函数从数据库中查询所有的职位信息和城市信息。接着定义了一个 `new_job_city()` 函数,用于更新给定职位的城市信息。最后通过一个循环遍历所有的职位信息,将城市信息精简为市级,然后更新到数据库中。
相关问题
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进行解析。然后通过一些规则提取出所需的数据,如个人增量指标、单位增量指标、个人竞价、单位竞价、个人成交、单位成交等。最后返回一个包含这些数据的字典。
import pandas as pd import re fdata = pd.read_csv("cata_3024.csv",encoding="gbk") def extract_province(address): province_re = re.compile(r'^(.*?(省|自治区))') match = province_re.match(address) if match: return match.group(1) else: return '' def['province'] = df['address'].apply(extract_province)
在这段代码中,第一行和第二行是正确的,分别导入了pandas和re库,并使用pandas的read_csv函数读取了一个csv文件。但是在第三行,您似乎打错了变量名,应该将"fdata"改为"df"。修改后的代码如下:
```python
import pandas as pd
import re
df = pd.read_csv("cata_3024.csv", encoding="gbk")
def extract_province(address):
province_re = re.compile(r'^(.*?(省|自治区))')
match = province_re.match(address)
if match:
return match.group(1)
else:
return ''
df['province'] = df['address'].apply(extract_province)
```
在这个例子中,我们首先导入了pandas和re库,然后使用pandas的read_csv函数读取了一个csv文件。接着定义了一个函数extract_province,用于提取地址中的省份信息,并将其应用到DataFrame的每一行上。最后,我们将提取出来的省份信息存储在DataFrame的一个新列中。
阅读全文