ypzl药品质量不合格数据库-excel自动排版
原创:
qq:231469242
import xlrd
import pandas,numpy
import matplotlib.pyplot as plt
import pandas as pd
#参数
#报告时间
reportdate="2016/12/22"
#省份
admin="江西"
fileName="江西2016年第4期药品质量公告不符合规定药品汇总(假冒).xls"
year="2016年"
#文件名
file="江西2016年第4期药品质量公告不符合规定药品汇总"
url="http://www.jxda.gov.cn/ZWGK/ZWTG/ZLGG/2016/12/14761230.html"
#假冒设置为空值
fake=""
data = xlrd.open_workbook(fileName)
table = data.sheets()[0]
#获取行数和列数
nrows = table.nrows
ncols = table.ncols
#把excel数据转换为列为元素的列表
list_columns=[]
#A类,存储标签包含的关键字
#存储药品名称相关中文
list_title_names=['药品名称','检品名称','药品品名','品名','样品名称','标示药品名称']
#存储标示生产企业相关中文
list_title_manufacturers=['标示生产单位','标示生产企业','样品标示生产单位','标示生产企业名称']
#存储药标示批号相关中文
list_title_pitchnos=['标示批号','批号','生产批号','批件号','产品批号']
#存储药标示批号相关中文
list_title_specifications=['标示规格','规格','药品规格']
#存储不合格项目相关中文
list_title_unpasseditems=['不符合项目','不合格项目','不符合规定项目']
#存储有效期相关中文
list_title_validperiods=['有效期至']
#存储来源相关中文
list_title_sources=['检品来源','来源','供样单位','申报单位','被抽样单位','被抽验单位','被抽样单位名称']
#存储检验单位相关中文
list_title_testoffices=['检验单位','检验机构']
#存储检验物质相关中文
list_title_testobjectives=['检验物质']
#存储检验依据相关中文
list_title_regulations=['检验依据']
#存储备注相关中文
list_title_notices=['备注']
#B类,存储列信息
list_name=[]
list_manufacturer=[]
list_pichno=[]
list_specification=[]
list_unpasseditem=[]
list_validperiod=[]
list_reportdate=[]
list_source=[]
list_testoffice=[]
list_testobjective=[]
list_regulation=[]
list_year=[]
list_file=[]
list_url=[]
list_notice=[]
list_fake=[]
#把excel数据转换为列为元素的列表 函数
def List_columns(table,ncols):
for i in range(ncols):
list1=table.col_values(i)
list_columns.append(list1)
return list_columns
#获取list_columnInformation数据
#list_columns是把excel数据转换为列为元素的列表
#list_title存储列标签信息,例如list_title_unpasseditems
#list_columnInformation表示搜索到的相关列信息,例如list_names
def List_columnInformation(list_columns,list_title_names,list_columnInformation):
for i in range(len(list_columns)):
#获取列数据
list_column=list_columns[i]
#title表示标题,例如产品名字
title=list_column[0]
#字段名去除空格
title1=title.replace(" ","")
#print("title:",title)
if title1 in list_title_names:
#print("find title")
list_columnInformation=list_column[1:]
return list_columnInformation
else:
list_columnInformation=['']*(nrows-1)
return list_columnInformation
#用于获取报告时间,网址,文件名等列信息
def List_repeat_columnInformation(nrows,value):
list_repeat_columnInformation=[value]*(nrows-1)
return list_repeat_columnInformation
#获取各列数据
list_columns=List_columns(table,ncols)
list_name=List_columnInformation(list_columns,list_title_names,list_name)
list_manufacturer=List_columnInformation(list_columns,list_title_manufacturers,list_manufacturer)
list_pichno=List_columnInformation(list_columns,list_title_pitchnos,list_pichno)
list_specification=List_columnInformation(list_columns,list_title_specifications,list_specification)
list_unpasseditem=List_columnInformation(list_columns,list_title_unpasseditems,list_unpasseditem)
list_validperiod=List_columnInformation(list_columns,list_title_validperiods,list_validperiod)
list_reportdate=List_repeat_columnInformation(nrows,reportdate)
list_source=List_columnInformation(list_columns,list_title_sources,list_source)
list_testoffice=List_columnInformation(list_columns,list_title_testoffices,list_testoffice)
list_testobjective=List_columnInformation(list_columns,list_title_testobjectives,list_testobjective)
list_regulation=List_columnInformation(list_columns,list_title_regulations,list_regulation)
list_adminadd=List_repeat_columnInformation(nrows,admin)
list_year=List_repeat_columnInformation(nrows,year)
list_file=List_repeat_columnInformation(nrows,file)
list_url=List_repeat_columnInformation(nrows,url)
list_notice=List_columnInformation(list_columns,list_title_notices,list_notice)
list_fake=List_repeat_columnInformation(nrows,'')
#pandas字典写入excel会有标题排序问题,所以用a,b,c等顺序字母代替
data=pd.DataFrame({'a':list_name,'b':list_manufacturer,
'c':list_pichno,'d':list_specification,
'e':list_unpasseditem,'f':list_validperiod,
'g':list_reportdate,'h':list_source,
'i':list_testoffice,
'j':list_testobjective,
'k':list_regulation,'l':list_adminadd,
'm':list_year,'n':list_file,'o':list_url,
'p':list_notice,'q':list_fake})
data.to_excel("ypzl_normal.xlsx")

ypzl药品质量不合格数据库-excel自动排版的更多相关文章
- 大手册(书籍)排版利器-XML自动排版生成工具
--支持全球化/多语言/符合W3C标准的XML自动排版工具 Boxth XML/XSL Formatter是专为XML数据或其他结构化数据源自动输出排版文件(如: PDF等)而设计的集数据格式化.版式 ...
- 自动排版工具——XML自动排版生成工具
——支持全球化/多语言/符合W3C标准的XML自动排版工具 Boxth XML/XSL Formatter是专为XML数据或其他结构化数据源自动输出排版文件(如: PDF等)而设计的集数据格式化.版式 ...
- SQL Server数据库定时自动备份
SQL Server 数据库定时自动备份[转] 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...
- eclipse自动排版JSP问题
eclipse自动排版JSP非常难看,标签每行显示不完整,开发时很难受,下面设置一下这个就好多了: window-->preferences-->Web-->HTML Files-- ...
- eclipse 自动排版
自动排版: ctrl + i 同名变量高亮: shift+alt+ o 导包: shift+ctrl +o
- Hibernate连接mysql数据库并自动创建表
天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...
- Windows环境下Oracle数据库的自动备份脚本
批处理文件(.bat) @echo off echo ================================================ echo Windows环境下Oracle数据 ...
- myeclipse自动排版
myeclipse代码排版方式有两种: 1. ctr+f 实现自动排版: 2. myeclipse->Preference->Java->Editor->Sava Action ...
- 使用SQL Server维护计划实现数据库定时自动备份
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定 ...
随机推荐
- mysql数据库乱码解决方法之一
在前端页面向数据库中插入带中文字符的数据,到数据库时中文都变成了"?",其中jsp页面已经是设为utf-8编码的,建数据库时选择的编码也是utf-8; 1.解决的办法是在连接数据库 ...
- Ubuntu下Apache+SVN+submin实现WEB管理SVN
为什么需要submin管理SVN? 原来在Ubuntu下,都是直接通过命令行创建SVN仓库并分配权限,但是这有一些问题: 每创建一个SVN仓库,都需要修改httpd.conf 每创建一个帐户,都需要手 ...
- 编译软件基础知识(1/2) via LinuxSir
内容来自LinuxSir: 如果不出意外的话,会出现say.so => not found. 这时的./test是不能运行的.但至少说明程序运行时是需要这个库的.那为什么找不到这个库呢?那就让我 ...
- EF6 Create Different DataContext on runtime(运行时改变连接字符串)
引言 在使用EF时,有时我们需要在程序运行过程中动态更改EF的连接字符串,但不幸的时EF是否对 ConfigurationManager.RefreshSection("xxx" ...
- [转载]python:open/文件操作
open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:' ...
- [Template]高精度模板
重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开 ...
- PHP数组操作
PHP数组 1.数字索引数组 1.1创建一个数组 php中最常用的两个类型是:数组,字符串.数组也分为两种,一种是数字索引,一种是关键是索引,关键字索引有点像python中字典的意思.数字索引类型的数 ...
- 脏检查and刷新机构
---恢复内容开始--- 脏检查:当食物提交时,Hiberante会对Session中持久状态的对象进行加测,判断对象的数据是否发生了变化 为什么要进行脏检查?, 解析:如果对象发生了改变,就需要将改 ...
- RFID考试背诵
简答题: 简述RFID标准多元化的原因: 由不同的技术因素.利益因素导致: 工作频率分布在低频至微波的多个频段中,频率不同,技术差异大. 作用距离的差异导致标准不同:因为应答器分为有源.无源两种工作方 ...
- 掌握SortSet接口和Set接口的关系,以及常用方法。
TreeSet类是可以排序的类.TreeSet实际上也是SortSet接口的子类. 此接口的所有类都是可以排序的. 所有的方法: 实例: package 类集; import java.util.So ...