把药品名称导入到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")

需要文件:

excel批处理_判断一个名称是不是药品的更多相关文章

  1. C#判断一个类中有无"指定名称"的方法

    C#中可以通过反射分析元数据来解决这个问题,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  2. Win7全自动精简批处理_温柔处理极速修正版/暴力剩女工程测试版

    2011htpcfans 发表于 2012-5-11 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210269&highligh ...

  3. DOS批处理命令判断操作系统版本、执行各版本对应语句

    DOS批处理命令判断操作系统版本.执行各版本对应语句   昨天在家里试用  netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...

  4. PHPExcel 是用来操作Office Excel 文档的一个PHP类库

    PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言.可以使用它来读取.写入不同格式的电子表格,如 Excel (BIFF) .xls ...

  5. C#实现如何判断一个数组中是否有重复的元素

    如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hashtable的Contains方法进行查找 /// ...

  6. C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

    C#实现如何判断一个数组中是否有重复的元素   如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...

  7. 【已解决】每次打开Excel时会同时打开一个空的Excel表格

    每次打开Excel时会同时打开一个空的Excel表格,情况如图. 官方解法如下,本人验证有效: 方法1, 请到以后路径中检查是否存在与空白文件夹同名字的Excel文件,删除它. C:\Users\\A ...

  8. Java判断一个字符串是否有中文

    Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...

  9. HDU 1756 Cupid's Arrow 计算几何 判断一个点是否在多边形内

    LINK:Cupid's Arrow 前置函数 atan2 返回一个向量的幅角.范围为[Pi,-Pi) 值得注意的是 返回的是 相对于x轴正半轴的辐角. 而判断一个点是否在一个多边形内 通常有三种方法 ...

随机推荐

  1. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  2. iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试

    iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...

  3. VS插件开发 - 登录身份验证

    [附加] 很多朋友问那个VS背景怎么弄的,我刚刚已经抽时间把制作步骤发出来了: 请参见<VS插件开发 - 个性化VS IDE编辑器,瞬间 高 大 上>. 最近一直在忙着一些事情,一直没有发 ...

  4. 记一次简单的SQL优化

    原来的sql是这样写的 SELECT d.ONSALE_BARCODE, d.ONSALE_NAME, c.ONSALE_ID, CAST( , ) ) AS CUSTOMARY_PRICE, CAS ...

  5. MySQL高级特性

    MySQL管理 用户管理 CREATE USER username IDENTIFIED BY 'password'; 新建用户 CREATE USER@'%' IDENTIFIED BY 'pass ...

  6. 三维网格精简算法(Quadric Error Metrics)附源码

    在计算机图形应用中,为了尽可能真实呈现虚拟物体,往往需要高精度的三维模型.然而,模型的复杂性直接关系到它的计算成本,因此高精度的模型在几何运算时并不是必须的,取而代之的是一个相对简化的三维模型,那么如 ...

  7. EXCEL中对1个单元格中多个数字求和

    如A1=3779.3759.3769.3781.3750,A2对A1中4个数字求和怎么求!请高手赐教! 方法一:在B1中输入公式=SUM(MID(A1,{1,6,11,16,21},4)*1) 方法二 ...

  8. jquery validate表单验证插件-推荐

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  9. [开源].NET数据库访问框架Chloe.ORM

    扯淡 13年毕业之际,进入第一家公司实习,接触了 EntityFramework,当时就觉得这东西太牛了,访问数据库都可以做得这么轻松.优雅!毕竟那时还年轻,没见过世面.工作之前为了拿个实习机会混个工 ...

  10. [LeetCode] Number of Segments in a String 字符串中的分段数量

    Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...