diff --git a/Py/.idea/.gitignore b/Py/.idea/.gitignore
deleted file mode 100644
index 38a1d4cd..00000000
--- a/Py/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# 默认忽略的文件
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/Py/.idea/Py.iml b/Py/.idea/Py.iml
deleted file mode 100644
index d81667ac..00000000
--- a/Py/.idea/Py.iml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Py/.idea/encodings.xml b/Py/.idea/encodings.xml
deleted file mode 100644
index 345bb0bc..00000000
--- a/Py/.idea/encodings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Py/.idea/inspectionProfiles/Project_Default.xml b/Py/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 2432abe9..00000000
--- a/Py/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Py/.idea/inspectionProfiles/profiles_settings.xml b/Py/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 105ce2da..00000000
--- a/Py/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Py/.idea/misc.xml b/Py/.idea/misc.xml
deleted file mode 100644
index 80b3409a..00000000
--- a/Py/.idea/misc.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Py/.idea/modules.xml b/Py/.idea/modules.xml
deleted file mode 100644
index 5d26daad..00000000
--- a/Py/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Py/.idea/vcs.xml b/Py/.idea/vcs.xml
deleted file mode 100644
index 2e3f6920..00000000
--- a/Py/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Py/DoAreaDocx.py b/Py/DoAreaDocx.py
deleted file mode 100644
index b581f6fe..00000000
--- a/Py/DoAreaDocx.py
+++ /dev/null
@@ -1,150 +0,0 @@
-import os
-import time
-
-import win32com
-from win32com.client import Dispatch
-import re
-import logging
-
-# pip install pywin32 openpyxl
-# pip install pywin32
-
-logging.basicConfig(
- level=logging.DEBUG, # 设置日志级别
- filename='app.log', # 设置日志文件名
- filemode='w', # 文件模式,'w'表示写模式,每次运行都会覆盖旧文件;'a'表示追加模式
- format='%(name)s - %(levelname)s - %(message)s' # 设置日志格式
-)
-
-working_dir = r"D:\dsWork\YunNanDsBase\Doc\全省及州市县区人口与教育报告集20241023\133个县区报告2022\县区研究报告"
-import openpyxl
-
-# 声明Word应用程序
-docApp = win32com.client.Dispatch('Word.Application')
-docApp.Visible = True
-docApp.DisplayAlerts = 0
-
-# 有问题的县区列表
-errorArea = []
-# 读取ErrorArea.txt,将每一行的县区名称读入列表中
-with open('ErrorArea.txt', 'r', encoding='utf-8') as f:
- for line in f:
- # 去除每行前后的空白字符,包括空格、制表符和换行符
- line = line.strip()
- # 将文本中的关键字替换为空字符串
- errorArea.append(line)
-
-# 在工作目录下创建Excel目录
-excel_dir = r'D:\dsWork\YunNanDsBase\Doc\全省及州市县区人口与教育报告集20241023\133个县区报告2022\Excel'
-if not os.path.exists(excel_dir):
- os.mkdir(excel_dir)
-# 遍历working_dir目录下的所有子文件夹
-for root, dirs, files in os.walk(working_dir):
- for dir in dirs:
- # 获取县区名称
- county_name = dir
-
- # 获取县区文件夹路径
- county_dir = os.path.join(root, dir)
- # 遍历县区文件夹下的所有文件
- for file in os.listdir(county_dir):
- # 获取文件路径
- file_path = os.path.join(county_dir, file)
- cityName = ""
- # 判断文件是否是Word文档
- if file_path.endswith('.docx') and not file.startswith('~'):
- cityName = file_path.replace(working_dir, '')[1:].split("各县")[0]
- areaName = file
-
- areaName = re.sub(r'[^\u4e00-\u9fa5]', '', areaName)
- if '市' not in areaName and '县' not in areaName and '区' not in areaName:
- continue
- # 打开文件文件,按行读取
- with open('replaceBlank.txt', 'r', encoding='utf-8') as f:
- for line in f:
- # 去除每行前后的空白字符,包括空格、制表符和换行符
- line = line.strip()
- # 将文本中的关键字替换为空字符串
- areaName = areaName.replace(line, '')
- # 打开文件文件,按行读取
- with open('replaceText.txt', 'r', encoding='utf-8') as f:
- for line in f:
- # 去除每行前后的空白字符,包括空格、制表符和换行符
- line = line.strip()
- # 将文本中的关键字替换为空字符串
- areaName = areaName.replace(line.split(' ')[0], line.split(' ')[1])
- # 检查Excel目录下是不是存在这个城市的文件夹,如果不存在,则创建
- city_dir = os.path.join(excel_dir, cityName)
- if not os.path.exists(city_dir):
- os.mkdir(city_dir)
-
- # 在城市文件夹下,查看是不是存在县区的子文件夹,如果不存在则创建
- county_sub_dir = os.path.join(city_dir, areaName)
- if not os.path.exists(county_sub_dir):
- os.mkdir(county_sub_dir)
- else: # 如果存在,就跳过
- # 查看一下这个文件夹下有多少个文件
- file_count = len([name for name in os.listdir(county_sub_dir)])
- if file_count > 10:
- print(county_sub_dir + " 文件夹下有超过10个文件,跳过")
- continue
- # 跳过错误县区
- flag = False
- for e in errorArea:
- if e in areaName:
- flag = True
- if flag:
- print(county_sub_dir + " 跳过")
- continue
- print("正在处理" + cityName + "-" + areaName + "...")
- # 使用word读取图表的技术,保存EXCEL文件到城市的目录下
- # 休息3秒,防止WORD打开频繁造成错误
- time.sleep(3)
- doc = docApp.Documents.Open(file_path)
- # 遍历文档中所有的文字段落,判断是不是以 图+数字开头
- idx = 1
- # 图表的名称列表
- tb_list = []
- for para in doc.Paragraphs:
- x = para.Range.Text.strip().replace("图 ", "图").replace(" ", " ")
- if x.startswith("图"):
- tb_list.append(x)
- idx = idx + 1
-
- # 遍历文档中的所有内嵌形状
- idx = 1
- for inline_shape in doc.InlineShapes:
- if inline_shape.Type == win32com.client.constants.wdInlineShapeChart:
- shape = doc.InlineShapes(idx)
- sheet = shape.Chart.ChartData.Workbook.Worksheets(1)
- # 创建一个新的Excel工作簿
- wb = openpyxl.Workbook()
- ws = wb.active
-
- # 遍历Excel工作表中的所有单元格,并将其写入新的工作簿
- for row in range(1, sheet.UsedRange.Rows.Count + 1):
- for col in range(1, sheet.UsedRange.Columns.Count + 1):
- cell_value = sheet.Cells(row, col).Value
- ws.cell(row=row, column=col, value=cell_value)
- # 保存新的Excel文件
- try:
- original_string = tb_list[idx - 1]
- # 使用正则表达式过滤,只保留中文、英文和数字
- original_string = original_string[1:]
- if ' ' in original_string:
- original_string = original_string.split(" ")[1]
- filtered_string = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]', '', original_string)
- fileName = '【' + str(idx) + '】' + filtered_string + ".xlsx"
-
- wb.save(county_sub_dir + '/' + fileName)
- except:
- pass
- wb.close()
- print("保存文件:" + fileName)
- # 下一个图表的索引号
- idx = idx + 1
- # 关闭文档和Word应用
- doc.Close()
- print(f"县区处理完成:{cityName}{areaName}")
-docApp.Quit()
-print("恭喜,所有县区数据整理工作成功完成!")
diff --git a/Py/DoCityDocx.py b/Py/DoCityDocx.py
deleted file mode 100644
index 0b95129c..00000000
--- a/Py/DoCityDocx.py
+++ /dev/null
@@ -1,84 +0,0 @@
-import os
-import win32com
-from win32com.client import Dispatch
-import re
-
-# pip install pywin32 openpyxl
-# pip install pywin32
-working_dir = r"D:/dsWork/YunNanDsBase/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/"
-import openpyxl
-
-# 在工作目录下创建Excel目录
-excel_dir = working_dir + 'Excel'
-if not os.path.exists(excel_dir):
- os.mkdir(excel_dir)
-
-# 关键词
-keyword = '人口变化及其对教育的影响'
-
-# 是不是打Word显示
-docApp = win32com.client.Dispatch('Word.Application')
-# 是不是打Word显示
-docApp.Visible = False
-docApp.DisplayAlerts = 0
-
-# 遍历工作目录下所有的docx文件,将文件名用keyword进行分隔,前一半是州市名称,后一半是上报的时间,我们取前一半的州市名称
-for file in os.listdir(working_dir):
- if file.endswith('.docx') and not file.startswith('~'):
- file_name = file.split('.')[0]
- # 判断一下file_name中是不是存在keyword,如果不存在,则输出错误,并结束程序
- if keyword not in file_name:
- print('Error: ' + file_name + ' 文件名称中并不包含:' + keyword)
- exit()
- # 确认包含后,提取出前半部分作为城市名称
- city_name = file_name.split(keyword)[0]
- # 在excel_dir目录下创建这个城市的子目录,准备将生成的excel文件放在这个子目录下
- city_dir = excel_dir + '/' + city_name
- if not os.path.exists(city_dir):
- os.mkdir(city_dir)
- # 将当前docx进行读取其中的每一个段落,要求以 "图"+数字开头,这是图例的意思
- doc_path = working_dir + '/' + file
- # print(doc_path)
- doc = docApp.Documents.Open(doc_path)
- # 遍历文档中所有的文字段落,判断是不是以 图+数字开头
- idx = 1
- # 图表的名称列表
- tb_list = []
- for para in doc.Paragraphs:
- x = para.Range.Text.strip().replace("图 ", "图").replace(" ", " ")
- if x.startswith("图"):
- tb_list.append(x)
- idx = idx + 1
-
- # 遍历文档中的所有内嵌形状
- idx = 1
- for inline_shape in doc.InlineShapes:
- if inline_shape.Type == win32com.client.constants.wdInlineShapeChart: # 检查是否为内嵌图表
- shape = doc.InlineShapes(idx)
- sheet = shape.Chart.ChartData.Workbook.Worksheets(1)
- # 创建一个新的Excel工作簿
- wb = openpyxl.Workbook()
- ws = wb.active
-
- # 遍历Excel工作表中的所有单元格,并将其写入新的工作簿
- for row in range(1, sheet.UsedRange.Rows.Count + 1):
- for col in range(1, sheet.UsedRange.Columns.Count + 1):
- cell_value = sheet.Cells(row, col).Value
- ws.cell(row=row, column=col, value=cell_value)
- # 保存新的Excel文件
- original_string = tb_list[idx - 1]
- # 使用正则表达式过滤,只保留中文、英文和数字
- original_string = original_string[1:]
- if ' ' in original_string:
- original_string = original_string.split(" ")[1]
- filtered_string = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]', '', original_string)
- fileName = '【' + str(idx) + '】' + filtered_string + ".xlsx"
- wb.save(city_dir + '/' + fileName)
- print("保存文件:" + fileName)
- # 下一个图表的索引号
- idx = idx + 1
- # print(idx - 1)
- # 关闭文档和Word应用
- doc.Close()
-docApp.Quit()
-print("恭喜,所有市州数据整理工作成功完成!")
diff --git a/Py/ErrorArea.txt b/Py/ErrorArea.txt
deleted file mode 100644
index cf334611..00000000
--- a/Py/ErrorArea.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-寻甸县
-禄劝县
-嵩明县
-富民县
-宁蒗县
-永胜县
-洱源县
-文山市
-西山区
-昭阳区
-鲁甸县
-宁洱县
\ No newline at end of file
diff --git a/Py/Test/DocxTuBiaoAdd.py b/Py/Test/DocxTuBiaoAdd.py
deleted file mode 100644
index 5990f959..00000000
--- a/Py/Test/DocxTuBiaoAdd.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# pip install pywin32
-# https://blog.csdn.net/weixin_42927998/article/details/115086797
-import win32com
-from win32com.client import Dispatch
-
-docApp = win32com.client.Dispatch('Word.Application')
-docApp.Visible = True
-docApp.DisplayAlerts = 0
-doc = docApp.Documents.Open('c:/1.docx')
-
-# 创建图表,图表的插入位置为预先在word文档中插入的书签,书签名为“插入图表位置”
-shape_chart = doc.Shapes.AddChart2(Style=201, Type=51, Top=doc.Bookmarks("插入图表位置").Select())
-shape_chart.WrapFormat.Type = 7 # 设置图表为嵌入型
-
-# 设置Word中的图表
-chart = shape_chart.Chart
-# 图表数据对应的工作表
-worksheet = chart.ChartData.Workbook.Worksheets(1)
-chart.SetSourceData("Sheet1!$A$1:$C$4") # 设置数据源范围
-
-# 簇状柱形图测试数据
-chart_data = [["", "系列A", "系列B", "系列C", "系列D"],
- [2020, 2, 4, 2, 3],
- [2019, 4, 5, 3, 2]]
-
-# 清空工作表默认数据
-worksheet.Range("A1:D5").value = None
-
-# 填入测试数据
-for row_index, row in enumerate(chart_data):
- for column_index, value in enumerate(row):
- worksheet.Cells(row_index + 1, column_index + 1).Value = value
-
-chart.SetSourceData("Sheet1!$A$1:$E$3") # 设置数据源范围
-
-# 设置图表样式示例
-chart.ChartTitle.Text = '测试标题' # 设置标题
-chart.FullSeriesCollection(2).Format.Fill.ForeColor.ObjectThemeColor = 10 # 设置系列2的填充颜色
-
-chart.ChartData.Workbook.Close() # 关闭workbook窗口
-
-doc.Save()
-doc.Close()
-docApp.Quit()
-
-
-'''
-Type
-1:柱形图(Column)
-2:折线图(Line)
-3:饼图(Pie)
-51:堆叠柱形图(Stacked Column)
-52:堆叠线图(Stacked Line)
-53:堆叠区域图(Stacked Area)
-55:雷达图(Radar)
-65:树状图(Treemap)
-73:旭日图(Sunburst)
-77:水桶图(Funnel)
-109:散点图(Scatter)
-183:气泡图(Bubble)
-'''
\ No newline at end of file
diff --git a/Py/Test/DocxTuBiaoRead.py b/Py/Test/DocxTuBiaoRead.py
deleted file mode 100644
index ca57cc16..00000000
--- a/Py/Test/DocxTuBiaoRead.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# pip install pywin32
-# https://blog.csdn.net/weixin_42927998/article/details/115086797
-import win32com
-from win32com.client import Dispatch
-
-docApp = win32com.client.Dispatch('Word.Application')
-# 是不是打Word显示
-docApp.Visible = False
-docApp.DisplayAlerts = 0
-working_dir = r"D:/dsWork/YunNanDsBase/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/"
-
-# doc = docApp.Documents.Open('c:/1.docx')
-# doc = docApp.Documents.Open('c:/昭通市人口变化及其对教育的影响20240416.docx')
-# doc = docApp.Documents.Open('c:/昆明市人口变化及其对教育的影响20240419.docx')
-doc = docApp.Documents.Open(working_dir+'红河哈尼族彝族自治州人口变化及其对教育的影响20240419.docx')
-
-
-# 遍历文档中所有的文字段落,判断是不是以 图+数字开头
-idx = 1
-for para in doc.Paragraphs:
- x = para.Range.Text.strip().replace("图 ", "图").replace(" ", " ")
- if x.startswith("图"):
- print(x)
- idx = idx + 1
-
-# 遍历文档中的所有内嵌形状
-idx = 1
-for inline_shape in doc.InlineShapes:
- if inline_shape.Type == win32com.client.constants.wdInlineShapeChart: # 检查是否为内嵌图表
- shape = doc.InlineShapes(idx)
- # 获取图表的标题,此项目中图表没有标题
- # print(shape.Chart.ChartTitle.Text)
- sheet = shape.Chart.ChartData.Workbook.Worksheets("Sheet1")
- # 行数
- row_size = sheet.UsedRange.rows.Count
- # 列数
- col_size = sheet.UsedRange.columns.Count
- # 遍历获取表格中的数据
- for i in range(1, row_size + 1):
- for j in range(1, col_size + 1):
- print(sheet.Cells(i, j).Value, end=" ")
- print("")
- print("")
- # 下一个图表的索引号
- idx = idx + 1
-print(idx-1)
-
-
-# 关闭文档和Word应用
-doc.Close()
-docApp.Quit()
diff --git a/Py/YunNan.py b/Py/YunNan.py
deleted file mode 100644
index 96af6f67..00000000
--- a/Py/YunNan.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# pip install pymysql
-# pip install requests beautifulsoup4
-
-# 查看结果
-# select * from t_dm_area where province_id='FD61813E-70A1-42AB-9A8E-141ED4D47B98' order by level_id;
-
-import time
-
-import pymysql
-import requests
-from bs4 import BeautifulSoup
-import re
-
-if __name__ == '__main__':
- # 遍历 mysql数据库,然后开启爬虫
- # 建立数据库连接
- conn = pymysql.connect(
- host='10.10.14.203', # 主机名(或IP地址)
- port=3306, # 端口号,默认为3306
- user='root', # 用户名
- password='Password123@mysql', # 密码
- charset='utf8mb4' # 设置字符编码
- )
-
- # 创建游标对象
- cursor = conn.cursor()
- # 选择数据库
- conn.select_db("ds_db")
- # 执行查询操作
- cursor.execute(
- "SELECT id,full_name FROM t_dm_area where province_id='FD61813E-70A1-42AB-9A8E-141ED4D47B98' order by level_id")
-
- # 获取查询结果,返回元组
- result: tuple = cursor.fetchall()
-
- for e in result:
- id = e[0]
- area_name = e[1]
- url = "https://baike.baidu.com/item/" + area_name + "?fromModule=lemma_search-box"
-
- print(url)
- # 发送HTTP GET请求
- response = requests.get(url)
- # 检查请求是否成功
- if response.status_code == 200:
- # 使用BeautifulSoup解析HTML内容
- soup = BeautifulSoup(response.text, 'html.parser')
- # 假设我们要抓取的是
标签中的文字
- # 你可以根据需要修改选择器来抓取不同的内容
- specific_divs = soup.select('div.para_YYuCh.summary_nfAdr.MARK_MODULE')
- # 遍历找到的所有特定div标签,并打印它们的文本内容
- for div in specific_divs:
- text = div.get_text(strip=True) # 使用get_text()方法获取文本,并去除
- # 使用正则表达式移除所有形如[数字]和[数字-数字]的字符串
- cleaned_text = re.sub(r'\[\d+(?:-\d+)?\]', '', text)
- sql = "update t_dm_area set memo=%s where id=%s"
- cursor.execute(sql, (cleaned_text, id))
- conn.commit()
- print("更新"+area_name+"数据成功")
- break
- else:
- print('Failed to retrieve the webpage')
-
- time.sleep(2)
- # 关闭游标和连接
- cursor.close()
- conn.close()
- print("结束")
\ No newline at end of file
diff --git a/Py/replaceBlank.txt b/Py/replaceBlank.txt
deleted file mode 100644
index 9d706bec..00000000
--- a/Py/replaceBlank.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-人口变化及其对教育的影响
-辖区人口变化趋势对基础教育的影响
-样稿
-市教育数据统计
-区报告
-人口变化趋势对基础教育的影响修改
-人口变化趋势对基础教育的影响审稿
-人口变化趋势对基础教育的影响陈副改终稿
-县区最终版
-人口变化趋势对基础教育的影响
-人口变化及其对基础教育影响的报告
-修改终稿
-人口变化及其对教育影响的报告
-正确
-附件
-定稿
-省级课题
-人口变化及其对基础教育的影响报告
-县区
-人口变化对教育的影响
-报告
-研究报告
-文本
-修改稿
-已审核
-已经审核
-报告
-总人口数常住人口数统计局提供
-初稿
-人口变化及其对教育影响的研究
-人口变化趋势对基础教育影响的研究
-研究
-的
\ No newline at end of file
diff --git a/Py/replaceText.txt b/Py/replaceText.txt
deleted file mode 100644
index 43de5f36..00000000
--- a/Py/replaceText.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-县县 县
-曲靖市马龙区 马龙区
-曲靖市麒麟区 麒麟区
-曲靖市沾益区 沾益区
-江城江城县 江城县
-墨江 墨江县
-盐津 盐津县
-盈江 盈江县
-芒市 芒市县
-宾川 宾川县
-镇康 镇康县
\ No newline at end of file