把药品名称导入到sheet1的A字段

# -*- coding: utf-8 -*-
"""
Created on Fri Dec  9 09:38:58 2016
判断一个名称归类为药品,药材,辅料,药包材

缺乏经典中药方剂,蒙药,等少数民族药品,这些被归入药材,需要改善

@author: Administrator
"""
import xlrd,re,pandas

excelFilename="test.xlsx"

#药品的关键词
rex_drug=re.compile(r'丸|颗粒|搽|片|胶囊|注射|诊断试剂|剂|凝胶|贴|软膏|膏|眼膏|粉针|溶液|吸入|滴眼|乳剂|口服液|液|盐酸|清凉油|糖浆|药品|复方|转移因子|汤|味散|安神|安神散')
#药包材的关键字
rex_yaobaocai=re.compile(r'复合膜|低硼硅|药品包装|药品包装用复合膜|双向拉伸|聚酯瓶|聚乙烯瓶|玻璃安瓿|低硼硅|剂瓶|滴眼剂瓶|药用硬片|高密度聚乙烯瓶')

rex_others=re.compile(r'富氧空气')

#获取一个excel内首页表格
def Get_sheet1_from_oneExcel(excelFileName):
    wb=xlrd.open_workbook(excelFileName)
    sheet=wb.sheets()[0]
    return sheet

#获取excel的首页信息,去除首行
def Get_sheet1_Data_NoFirstLine(excelFileName):
    sheet=Get_sheet1_from_oneExcel(excelFileName)
    #获取表格行数和列数
    highest_row=sheet.nrows
       
    sheet_data=[]
    for rowNum in range(1,highest_row):
        #获取行数据
        rowData=sheet.row_values(rowNum)
        sheet_data.append(rowData[0])
     
    return sheet_data

#判断是药品,药材,辅料,药包材
def Drug_type(drug):
    #不是字符串就转换为字符串
    if type(drug)!=str:
        drug=str(drug)
    #正则表达式快速匹配    
    if rex_others.search(drug)!=None:
        return "其它"     
    
    #药品分类
    elif rex_drug.search(drug)!=None:
        #print("in rexq")
        #print(rex1.search(i))
        return "药品"
       
     #药包材分类    
    elif rex_yaobaocai.search(drug)!=None:
        return "药包材"
        
        
    #字典精确匹配 ,注册数据库与中药材数据库有重复,优先遍历中药材   
    elif drug in list_fuliao:
        #print("在药品辅料数据库内")
        return "辅料"
    
       
    elif drug in list_yaobaocai:
        #print("在药包材数据库内")
        return "药包材"    

    #中药材筛选,因为注册数据库中有药品也有药材
    elif drug in list_zhongyaocai:
        #print("在药包材数据库内")
        return "药材"
        
    
    elif drug in list_yaopin:
        #print("在药品注册数据库内")
        return "药品"
      #药材分类    
    else:
        return "药材"
    #else:
       #return "不确定"
    
    
#获取药品信息   
list_yaopin=Get_sheet1_Data_NoFirstLine("药品.xlsx")
#获取辅料信息   
list_fuliao=Get_sheet1_Data_NoFirstLine("辅料.xlsx")
#获取药包材信息   
list_yaobaocai=Get_sheet1_Data_NoFirstLine("药包材.xlsx")
#获取中药材信息   
list_zhongyaocai=Get_sheet1_Data_NoFirstLine("中药材.xlsx")

#处理表格
list_drugs=Get_sheet1_Data_NoFirstLine(excelFilename)  
#药品药材分类
list_drugType=[Drug_type(i) for i in list_drugs]
#写入excel
data=pandas.DataFrame({'me_name':list_drugs,'me_type':list_drugType})
data.to_excel("药品与种类.xlsx")

需要文件:

最新文章

  1. C++Primer学习笔记(1)
  2. iTunes
  3. percona-toolkit 之 【pt-summary】、【pt-mysql-summary】、【pt-config-diff】、【pt-variable-advisor】说明
  4. < 独立项目 - 文本挖掘 > - 2016/11/13 第二更 - <Python环境准备>
  5. POJ2762 Going from u to v or from v to u?(判定单连通图:强连通分量+缩点+拓扑排序)
  6. 【BZOJ】3669: [Noi2014]魔法森林(lct+特殊的技巧)
  7. 2016年10月23日 星期日 --出埃及记 Exodus 19:7
  8. Android 颜色渲染(三) Shader颜色渲染
  9. java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
  10. HDU 1010 Temper of the bone(深搜+剪枝)
  11. JS事件及其兼容用法
  12. BYS推荐MS前端PhoneCall面试问题整理-1
  13. 修改MySQL的数据目录
  14. html 的 crossorigin 属性
  15. U3D面试五
  16. Lunx下 怎样启动和关闭oracle数据库
  17. python 自然语言处理库https://www.nltk.org/nltk_data/
  18. 平台升级至nginx+Tomcat9.0.1(Spring5.0.1+velocity2.0+quartz-2.3.0)+redis集群
  19. Why is IMAP better than POP?
  20. Mysql 千万级快速查询|分页方案

热门文章

  1. 从0到1打造直播 App
  2. MVC 5 中Filter控制 action的访问权限
  3. yii2 ActiveRecord多表关联以及多表关联搜索的实现
  4. 【转】MySql中的函数
  5. Login控件尝试
  6. 简单配置 nginx 反向代理
  7. What's new in Windows 10 Enterprise with Microsoft Edge.(Windows 10 新功能)
  8. java.io.NotSerializableException: test.io.file.Student
  9. Android 6.0 运行时权限处理完全解析
  10. 东软HIS切换输入法卡死的解决方法