python代码整理新冠数据

前几天无聊,简单写了下,也没有整理,请参考:

# -*- 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

输出结果,可以看前几天我发的头条文章:

截至4月10日24时新型冠状病毒肺炎疫情最新情况

截至4月9日24时新型冠状病毒肺炎疫情最新情况

你可能感兴趣的:(python代码整理新冠数据)