前几天无聊,简单写了下,也没有整理,请参考:
# -*- coding:utf-8 -*-
import datetime
import os
import re
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
QPushButton, QApplication, QLabel, QGridLayout, QTextEdit,
QMessageBox)
from PyQt5.QtGui import QFont
import pandas as pd
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
QToolTip.setFont(QFont('SansSerif', 12))
self.qz = QLabel('确诊数据')
self.wz = QLabel('无症状数据')
self.qzEdit = QTextEdit()
self.wzEdit = QTextEdit()
self.grid = QGridLayout()
self.grid.setSpacing(10)
self.grid.addWidget(self.qz, 1, 0)
self.grid.addWidget(self.qzEdit, 1, 1, 1, 1)
self.grid.addWidget(self.wz, 2, 0)
self.grid.addWidget(self.wzEdit, 2, 1, 1, 1)
self.setLayout(self.grid)
# 创建一个PushButton并为他设置一个tooltip
self.btn = QPushButton('执行操作', self)
# btn.sizeHint()显示默认尺寸
self.btn.resize(self.btn.sizeHint())
self.btn.clicked.connect(self.clickButton)
# 移动窗口的位置
self.btn.move(5, 450)
self.setGeometry(300, 300, 600, 500)
self.setWindowTitle('新冠最新消息')
self.show()
def clickButton(self):
qz = self.qzEdit.toPlainText()
wz = self.wzEdit.toPlainText()
if qz == '' or wz == '':
self.msg1('参数为空')
return
qz_data = qz.split(";")
qz_list = []
## 确诊数据解析
for i in qz_data:
if '、' in i:
str1 = i.split(',')[0][:-1]
key1 = ''.join(re.findall('[\u4e00-\u9fa5]', str1))
value1 = re.findall(r'\d+', str1)[0]
qz_list.append({'省份': key1, '确诊人数': value1})
qz_data_2 = i.split(',')[1][2:]
for j in qz_data_2.split('、'):
key2 = ''.join(re.findall('[\u4e00-\u9fa5]', j[:-1]))
value2 = re.findall(r'\d+', j[:-1])[0]
qz_list.append({'城市': key2, '确诊人数': value2})
else:
str1 = i.split(',')[0][:-1]
key1 = ''.join(re.findall('[\u4e00-\u9fa5]', str1))
value1 = re.findall(r'\d+', str1)[0]
key2 = i.split(',')[1].split('在')[-1]
qz_list.append({'省份': key1, '确诊人数': value1})
qz_list.append({'城市': key2, '确诊人数': value1})
wz_data = wz.split(";")
wz_list = []
## 无症状数据解析
for i in wz_data:
if '、' in i:
str1 = i.split(',')[0][:-1]
key1 = ''.join(re.findall('[\u4e00-\u9fa5]', str1))
value1 = re.findall(r'\d+', str1)[0]
wz_list.append({'省份': key1, '无症状人数': value1})
wz_data_2 = i.split(',')[1][2:]
for j in wz_data_2.split('、'):
key2 = ''.join(re.findall('[\u4e00-\u9fa5]', j[:-1]))
value2 = re.findall(r'\d+', j[:-1])[0]
wz_list.append({'城市': key2, '无症状人数': value2})
else:
str1 = i.split(',')[0][:-1]
key1 = ''.join(re.findall('[\u4e00-\u9fa5]', str1))
value1 = re.findall(r'\d+', str1)[0]
key2 = i.split(',')[1].split('在')[-1]
wz_list.append({'省份': key1, '无症状人数': value1})
wz_list.append({'城市': key2, '无症状人数': value1})
qz_frame = pd.DataFrame(qz_list)
wz_frame = pd.DataFrame(wz_list)
today = datetime.date.today()
oneday = datetime.timedelta(days=1)
yesterday = today - oneday
qz_file_name = yesterday.strftime('%Y-%m-%d') + '确诊.csv'
wz_file_name = yesterday.strftime('%Y-%m-%d') + '无症状.csv'
qz_frame.to_csv(qz_file_name)
wz_frame.to_csv(wz_file_name)
if os.path.isfile(qz_file_name) and os.path.isfile(wz_file_name):
self.msg1('成功')
else:
self.msg1('失败')
def msg1(self, msg):
QMessageBox.about(self, "执行结果", msg)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
测试数据:(目前国家卫健委数据不包含各个地级市的数据,该测试数据为前几天结果)
## 确诊数据
qz = '上海市914例,其中松江区291例、浦东新区209例、闵行区101例、嘉定区71例、杨浦区61例、徐汇区44例、黄浦区37例、静安区28例、宝山区21例、奉贤区16例、金山区15例、普陀区8例、虹口区6例、长宁区5例、青浦区1例;吉林187例,其中长春市102例、吉林市66例、白城市16例、四平市2例、辽源市1例;广东19例,其中广州市18例、中山市1例;浙江9例,其中宁波市4例、嘉兴市3例、湖州市1例、绍兴市1例;福建9例,其中宁德市6例、泉州市3例;江苏7例,其中南京市3例、苏州市2例、徐州市1例、连云港市1例;陕西7例,其中西安市6例、渭南市1例;山东2例,其中济南市1例、青岛市1例;海南2例,均在三亚市;四川2例,均在成都市;云南2例,其中曲靖市1例、普洱市1例;山西1例,在太原市;辽宁1例,在沈阳市;安徽1例,在阜阳市;江西1例,在南昌市'
## 无症状数据
wz = '上海市25173例,其中浦东新区6501例、徐汇区3109例、闵行区3055例、宝山区1805例、杨浦区1782例、黄浦区1741例、松江区1536例、嘉定区1333例、虹口区1272例、普陀区992例、青浦区879例、静安区580例、长宁区422例、奉贤区69例、崇明区54例、金山区43例;吉林797例,其中长春市743例、吉林市46例、辽源市7例、白山市1例;河北100例,其中保定市67例、邯郸市31例、定州市2例;安徽68例,其中阜阳市32例、六安市30例、合肥市3例、淮南市2例、滁州市1例;江苏46例,其中苏州市12例、南通市9例、镇江市9例、南京市7例、连云港市3例、宿迁市2例、徐州市1例、常州市1例、淮安市1例、泰州市1例;湖北33例,其中武汉市12例、黄冈市10例、鄂州市8例、恩施土家族苗族自治州2例、随州市1例;浙江28例,其中杭州市17例、嘉兴市8例、金华市2例、宁波市1例;江西19例,均在南昌市;广东18例,其中广州市9例、佛山市8例、深圳市1例;山东13例,其中济南市7例、临沂市4例、日照市1例、菏泽市1例;辽宁12例,其中沈阳市9例、鞍山市2例、锦州市1例;福建9例,均在宁德市;云南8例,其中普洱市4例、文山壮族苗族自治州3例、昆明市1例;海南5例,均在三亚市;河南4例,其中郑州市2例、安阳市1例、永城市1例;山西3例,其中太原市2例、运城市1例;黑龙江3例,均在牡丹江市;新疆3例,均在乌鲁木齐市;广西2例,其中防城港市1例、崇左市1例;四川1例,在绵阳市'
执行代码,结果:
执行结果图会在代码路径目录生成,相应的数据csv
输出结果,可以看前几天我发的头条文章:
网友评论