创新工场—处理药物数据中使用过的代码
本文记录了在创新工场实习过程中对药物说明书进行操作的代码,全部是进行规则匹配和正则字符串没什么技术含量,仅做个记录方便搬运
# 处理爬取的药物说明书数据集时使用的代码,药物说明书链接:https://pan.baidu.com/s/1v1puWYLY8lDnbKKEPVTFgg 密码:jjw7
import re
import pandas as pd
f = open('./药品说明书(除西药)/健客.txt','r')
data = []num = 0
# print(clounms)
#for line in f.readlines():#line = re.sub('\[|\]|\'|"',string=line,repl='')#list = line.split('\t')#line_data = {}#jingji = ''# yaopingdizhi = list[0]# line_data['药品地址'] = yaopingdizhi# print(yaopingdizhi)# yaopingming = list[1].split(' ')[0].replace('价格','')# 药品名称在后面一并处理# line_data['药品名_药盒'] = yaopingming# # print(line_data['药品名_药盒'])#
# list2 = list[2].split(',')
# if len(list2) != 2:# 非药品有两个标签,药品有三个标签,非药品没有是否处方药
# chufangyao = ''
# yaopingleibie = ''
# yibao = ''
# else:
# chufangyao = ''
# yaopingleibie = list2[0]
# yibao = list2[1]
# line_data['是否处方药'] = chufangyao
# line_data['药品类别'] =yaopingleibie
# line_data['是否医保'] = yibao
#
#
#
# # print(list[3])
# jiage = float(re.sub('¥|,',string=list[3],repl=''))
# line_data['价格'] = jiage
# # print(jiage)
#
#
# pizhunwenhao = re.sub('批准文号:',string = list[4],repl='').replace(' ','').replace('国药准字','').replace('国药准','').replace('注册证号','').replace('医疗机构制剂','').replace('国准字','').replace('该药已做变更','')
# pizhunwenhao = re.sub('国?药?准?字?',string = pizhunwenhao,repl='').replace('食健','').replace('+','/').replace('京制','')
# # if not re.match(pattern='.*[A-Z]{1,}[0-9]{6,}.*',string=pizhunwenhao):
# # pizhunwenhao=''
# line_data['批准文号'] = pizhunwenhao
# # print('批准文号',pizhunwenhao)
# #
# yaopingshuomingcanshu = list[5].strip().split(',')
#
# for i in yaopingshuomingcanshu:
# if '药品名称:' in i :
# yaopingming_shuomingshu = re.sub(pattern='汉语拼音.*',string=i,repl='').replace(':','').replace(':','')
# yaopingming_shuomingshu = re.sub(pattern='英文名.*',string=i,repl='')
# yaopingming_shuomingshu = re.sub(pattern='曾用名.*',string=i,repl='')
# yaopingming_shuomingshu = re.sub(pattern='药品名称:?:?',string=i,repl='')
# if yaopingming_shuomingshu == yaopingming:
# yaopingming_shuomingshu = ''
# line_data['药品名_说明书'] = yaopingming_shuomingshu
# # print(yaopingming_shuomingshu)
# #
# #
# if '药品规格:' in i :
# yaopingguige = i.replace('药品规格:', '')
# line_data['药品规格'] = yaopingguige
# #print(yaopingguige)
#
# if '药品单位' in i :
# yaopingdanwei = re.sub('生产厂家:.*',string=i,repl='').replace('药品单位:','').replace('/盒','')
# yaopingdanwei = re.sub('大|中|小',string=yaopingdanwei,repl='')
# line_data['药品单位'] = yaopingdanwei
# #print(yaopingdanwei)
#
# if '生产厂家' in i:
# shenchanchangjia = re.sub('.*生产厂家[:是]',string=i,repl='')
# shenchanchangjia = re.sub(',.*',string=shenchanchangjia,repl='')
# # print(shenchanchangjia)
# line_data['生产厂家'] = shenchanchangjia
# # print(shenchanchangjia)
#
#
# if '主治疾病' in i :
# zhuzhijibing = i.replace('主治疾病:','')
# # print(i)
# line_data['主治疾病'] = zhuzhijibing
# # print(zhuzhijibing)
#
#
# if '医师建议' and '注册证号' in i :
# # print('医师建议与注册证号',i)
# try:
# xiugaizuhcezhenghao = i.split('原注册证号')[0]
# except:
# pass
# xiugaizuhcezhenghao = re.sub(pattern='医师建议:注册证号',string=i,repl='')
# xiugaizuhcezhenghao = re.sub('国药准字',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('批准文号:?',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub(pattern='[注]?册证号[:]?',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub(pattern='注*册证号',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('原注册证号.*',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('分包装.*',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('公司名称.*',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('原.*',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('产品.*',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub(':|:|备注|医师建议',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('医师建议注?册?证?号?',string=xiugaizuhcezhenghao,repl='')
# xiugaizuhcezhenghao = re.sub('&.*',string=xiugaizuhcezhenghao,repl='')
# if re.match(pattern='[A-Z]+[0-9]*',string=xiugaizuhcezhenghao):
# if xiugaizuhcezhenghao == pizhunwenhao:
# # print('批准证号未修改',pizhunwenhao,xiugaizuhcezhenghao)
# xiugaizuhcezhenghao = ''
# line_data['修改之后的批准文号'] = xiugaizuhcezhenghao
# else:
# line_data['修改之后的批准文号'] = ''
# # print(line_data['修改之后的批准文号'])
# elif '医师建议' in i :
# yishijianyi = re.sub(pattern='.*医师建议:?',string=i,repl='')
# # print(i)
# line_data['医师建议'] = yishijianyi
# #print(line_data['医师建议'])
#
# #
# yaopingxiangxishuomingshu = list[6].strip().split(',')
# for j in yaopingxiangxishuomingshu:
# if '药品名称' in j :
# yaopingming_xiangxishuomingshu = re.sub(pattern='.*药品名称?:?:?',string=j,repl='').replace(':','').replace(':','')
# line_data['药品名_详细说明书']= yaopingming_xiangxishuomingshu
# # print(line_data['药品名_详细说明书'])
# #
# if '商品名/商标' in j:
# shangbiao = re.sub(pattern='商品名/商标:',string=j,repl='')
# line_data['商标'] = shangbiao
# # print(shangbiao)
# #
#
# if '规格' in j :
# guige_xiangxishuomingshu = re.sub(pattern='规格:',string=j,repl='')
# if len(guige_xiangxishuomingshu) >50:
# #print(guige_xiangxishuomingshu)
# guige_xiangxishuomingshu = ''
# if guige_xiangxishuomingshu!= yaopingguige:
# line_data['详细说明书中的药品规格'] = guige_xiangxishuomingshu
# #print('前后规格不一致',yaopingguige,guige_xiangxishuomingshu)
# #
# #
# if '适应症' in j :
# shiyingzheng = re.sub(pattern='适应症:?:?',string=j,repl='')
# line_data['适应症'] = shiyingzheng
# #print(shiyingzheng)
# if '用法用量' in j :
# yongfayongliang = re.sub(pattern='用法用量:?:?',string=j,repl='')
# line_data['用法用量'] = yongfayongliang
# #print(yongfayongliang)
# #
# if '不良反应:' in j :
# buliangfanying = re.sub(pattern='不良反应:?:?',string=j,repl='')
# line_data['不良反应'] = buliangfanying
# #print(buliangfanying)
# # # 药品详细说明书(药品名,商标,规格,适应症,用法用量,不良反应,禁忌,注意事项,药理毒理,生产厂家,批准文号,生产地址,条形码)']
# if '禁忌' in j:
# jingji = re.sub(pattern='禁忌:?:?',string=j,repl='')
# line_data['禁忌'] = jingji
# #print(jingji)
# if '注意事项' in j :
# zhuyishixiang = re.sub(pattern='注意事项:?:?',string=j,repl='')
# line_data['注意事项'] = zhuyishixiang
# if jingji == zhuyishixiang:
# line_data['注意事项'] = ''
# # print(zhuyishixiang)
# line_data['药理毒理'] = ''
# if '药理毒理' in j :
# bingliduli = re.sub(pattern='药理毒理:',string=j,repl='')
# line_data['药理毒理'] = bingliduli
# if '生产厂家' in j :
# shengchanchagnjia = re.sub(pattern='生产厂家:?',string=j,repl='')
# line_data['生产厂家'] = shengchanchagnjia
#
# if '生产地址' in j :
# shengchandizhi = re.sub(pattern='生产地址:',string=j,repl='')
# line_data['生产地址'] = shengchandizhi
# if '条形码' in j :
# tiaoxingma = re.sub(pattern='条形码:?',string=j,repl='')
# if not re.match(pattern='.*[0-9]{7,}',string=tiaoxingma):
# # print('错误',tiaoxingma,j)
# tiaoxingma = ''
# line_data['条形码'] = tiaoxingma
# #
# #
# #
# #
# if yaopingming_xiangxishuomingshu == yaopingming_shuomingshu and yaopingming_xiangxishuomingshu == yaopingming and yaopingming == yaopingming_shuomingshu:
# # print('前中后一致')
# pass
# elif yaopingming_xiangxishuomingshu == yaopingming:
# # print('前后相等')
# line_data['药品名_详细说明书'] = ''
# elif yaopingming_xiangxishuomingshu == yaopingming_shuomingshu:
# # print('中后相等')
# line_data['药品名_详细说明书'] = ''
# else:
# pass
# # print('都不相等',yaopingming,yaopingming_shuomingshu,yaopingming_xiangxishuomingshu)
#
# # print(yaopingming)
# # print(yaopingming_shuomingshu)
# # print(yaopingming_xiangxishuomingshu,'\n\n\n')
# flag = 0
# fenges = ['商品名', '商品名称', '通用名', '通用名称', '汉语拼音', '英文名称', '成份', '英文名', '曾用名','剂型','本品主要成分','主要成分','成分','本品']
# for fenge in fenges:
# if fenge in yaopingming_shuomingshu:
# flag = 1
# break
# if flag == 1:
# yaopingming_shuomingshu = re.sub(pattern='医师建议:?:?',string=yaopingming_shuomingshu,repl='')
# if '通用名称' or '通用名' in yaopingming_shuomingshu:
# # print(yaopingming_shuomingshu)
# tongyongming = re.sub(pattern='.*通用名称?:?:?', string=yaopingming_shuomingshu, repl='').replace(':', '').replace('。','').replace('品名','')
# # print(tongyongming)
# # print(tongyongming)
# # tongyongming1=''
# for t in fenges:
# if t in tongyongming:
# # print(t)
# tongyongming = tongyongming.split(t)[0]
# # print(tongyongming)
# # break
# # print(tongyongming)
# line_data['通用名'] = tongyongming
# # print(line_data['通用名'])
#
# if '商品名称' or '商品名' in yaopingming_shuomingshu:
# shangpinmingcheng = re.sub(pattern='.*商品名称?:?:?', string=yaopingming_shuomingshu, repl='').replace(':', '').replace('。','').replace('品名','')
# # print(tongyongming)
# # tongyongming1=''
# for t in fenges:
# if t in shangpinmingcheng:
# # print(t)
# shangpinmingcheng = shangpinmingcheng.split(t)[0]
# # break
# line_data['商品名称'] = shangpinmingcheng
#
# if '汉语拼音' in yaopingming_shuomingshu:
# hanyupinyin = re.sub(pattern='.*汉语拼音:?:?', string=yaopingming_shuomingshu, repl='').replace(':', '').replace('。','')
# # print(tongyongming)
# # tongyongming1=''
# for t in fenges:
# if t in hanyupinyin:
# # print(t)
# hanyupinyin = hanyupinyin.split(t)[0]
# # break
# line_data['汉语拼音'] = hanyupinyin
# line_data['英文名称'] = ''
# if '英文名称' or '英文名' in yaopingming_shuomingshu:
# # print(yaopingming_shuomingshu)
# yingwenmincheng = re.sub(pattern='.*英文名称?:?:?', string=yaopingming_shuomingshu, repl='').replace(':', '').replace('。','')
# # print(tongyongming)
# # tongyongming1=''
# for t in fenges:
# if t in yingwenmincheng:
# # print(t)
# yingwenmincheng = yingwenmincheng.split(t)[0]
# # break
# if re.match(pattern='[a-zA-Z]*',string=yingwenmincheng):
# # print(yingwenmincheng)
# line_data['英文名称'] = yingwenmincheng
# else:
# line_data['英文名称'] = ''
#
# line_data['曾用名'] = ''
# if '曾用名' in yaopingming_shuomingshu:
# cengyongming = re.sub(pattern='.*曾用名次?:?:?', string=yaopingming_shuomingshu, repl='').replace(':', '').replace('。','')
# # print(tongyongming)
# # tongyongming1=''
# for t in fenges:
# if t in cengyongming:
# # print(t)
# cengyongming = cengyongming.split(t)[0]
# # break
# line_data['曾用名'] = cengyongming
#
# line_data['剂型'] = ''
# if '剂型' in yaopingming_shuomingshu:
# jixing = re.sub(pattern='.*剂型:?:?', string=yaopingming_shuomingshu, repl='').replace(':', '').replace('。','')
# # print(tongyongming)
# # tongyongming1=''
# for t in fenges:
# if t in jixing:
# # print(t)
# jixing = jixing.split(t)[0]
# # print(jixing)
# # break
# line_data['剂型'] = jixing
# # print(jixing)
#
# data.append(line_data)
# df = pd.DataFrame(data)
# df = df.fillna('')
# jishu =0
# clounms = ['药品名_药盒','药品名_说明书','药品名_详细说明书','通用名','曾用名','商品名称','英文名称','汉语拼音','剂型','是否处方药','药品类别','是否医保','价格','批准文号','修改之后的批准文号',
# '药品规格','详细说明书中的药品规格','药品单位','用法用量','适应症','主治疾病','不良反应','禁忌','注意事项','药理毒理','医师建议','生产地址','生产厂家','药品地址','条形码','商标']
# df = df[clounms]
# df.to_csv('健客.csv',index=False)
# 将得到的药品说明书进行去重,得到所有的药品样品数量
import pandas as pd
import _thread
ff = pd.read_csv(open('中成药.csv','r',encoding='utf-8'))
list=[]
A =['药品名_药盒','药品名_详细说明书','通用名','曾用名','商品名称','英文名称','汉语拼音']
kong = set(ff[A].loc[0])&set(ff[A].loc[1])
f = ff.drop_duplicates(['药品名_药盒']).reset_index(drop=True)
changdu = int(f.shape[0])
def f1():for i in range(0, changdu // 4):if i not in list:for j in range(f.shape[0]):chongfu = set(f[A].loc[i]) & set(f[A].loc[j])if chongfu != kong and chongfu != set():print(set(f[A].loc[i]), set(f[A].loc[j]), set(f[A].loc[i]) & set(f[A].loc[j]))list.append(j)
def f2():for i in range(changdu // 4, changdu // 4 * 2):if i not in list:for j in range(f.shape[0]):chongfu = set(f[A].loc[i]) & set(f[A].loc[j])if chongfu != kong and chongfu != set():print(set(f[A].loc[i]), set(f[A].loc[j]), set(f[A].loc[i]) & set(f[A].loc[j]))list.append(j)
def f3():for i in range(changdu // 4 * 2, changdu // 4 * 3):if i not in list:for j in range(f.shape[0]):chongfu = set(f[A].loc[i]) & set(f[A].loc[j])if chongfu != kong and chongfu != set():print(set(f[A].loc[i]), set(f[A].loc[j]), set(f[A].loc[i]) & set(f[A].loc[j]))list.append(j)
def f4():for i in range(changdu // 4 * 3, changdu):if i not in list:for j in range(f.shape[0]):chongfu = set(f[A].loc[i]) & set(f[A].loc[j])if chongfu != kong and chongfu != set():print(set(f[A].loc[i]), set(f[A].loc[j]), set(f[A].loc[i]) & set(f[A].loc[j]))list.append(j)try:_thread.start_new_thread(f1())_thread.start_new_thread(f2())_thread.start_new_thread(f3())_thread.start_new_thread(f4())
except:print('错误')f.drop(list)
f.to_csv('删除之后的中成药_{}.csv'.format(f.shape[0]),encoding='utf-8')
print(list)
创新工场—处理药物数据中使用过的代码相关推荐
- ajax获取的数据中包含html代码,执行ajax返回数据中包含的script脚本代码
ajax虽然很方便,提升了我们的交互体验,但是它也有可恨之处,就是ajax请求得到的数据中如果包含脚本代码,比如说请求得到的是一块html内容,我们把这块html内容插入到网页中的某个地方,但是其中明 ...
- 使用Matlab提取ADC采样数据中的噪声
正常波形与噪声波形的区别 正常方波信号的特征:一个周期内的数据按时间单调变化,则仅有2种情况:① 数据在上升或下降边沿时,其两边的数据则是一边大一边小(如下图中C和D点):② 数据处于平稳时,则两边大 ...
- JMC | 药物发现中的迁移学习
导读 药物发现工作中可用于训练计算模型的数据集通常很少.标记数据的稀疏可用性是人工智能辅助药物发现的主要障碍.解决该问题的一种方法是开发可以处理相对异构和稀缺数据的算法.迁移学习是一种机器学习方法,可 ...
- JMC | 人工智能在药物发现中的应用:走进广阔的天地
JMC推出 "Artificial Intelligence in Drug Discovery "特刊,强调人工智能(AI)在制药研究中的新兴作用.本期的一个焦点是阐明人工智能方 ...
- 华西生物医学大数据中心俞鹏课题组博士后招聘启事
四川大学华西医院生物医学大数据中心俞鹏课题组拟招收博士后数名.主要从事:1)生物信息学及实验验证,2)生物医学信息学,3)生物医学文献审编和本体构建,4)药用植物基因组学及合成生物学,5)化学信息学. ...
- 十项观察!药物开发中的AI现状
今年十月底在哈弗医学院由Corey Lane Partners,LLC创办的BioPharma AI应用峰会已经圆满落幕.这次峰会堪称是人工智能和生命科学相交的一个显型快照.本文我们将总结一下这次峰会 ...
- 人工智能可以发现数据中隐藏的物理规律
来源:ScienceAI 编辑:萝卜皮 神户大学和大阪大学的研究人员成功开发了人工智能技术,可以从常规观测数据中提取隐藏的运动方程,并创建一个遵循物理定律的模型. 这项技术可以让研究人员发现现象背后隐 ...
- python运用在大数据中精准生活_大数据分析技术在生活中的广泛应用
段雯琼++薛然++任亚丽 摘 要 文章介绍了大数据技术的即时性.准确性和预测性,并将大数据技术与公共交通.医药领域.移动通信网络优化相结合,从而方便了人们的生活,提高了人们的生活质量. [关键词]大数 ...
- 带你初步了解药物设计中的生物信息学
带你初步了解药物设计中的生物信息学 随着人类基因组计划和各种组学计划的实施.大量疾病相关基因及作用靶点被发现.生物信息学的兴起,为新药设计提供了新的理论和思路.高通量数据,例如基因组,转录组,蛋白质组 ...
- 生物信息学|药物发现中的机器学习技术(2)
本篇推文引自:Advanced machine-learning techniques in drug discovery 1. 迁移学习 如果数据量比较少,那么有一些技术可以用来规避这个问题 ...
最新文章
- 多个硬件体验如一,华为终端分布式技术会重构IoT生态吗?
- SpringMVC:学习笔记(5)——数据绑定及表单标签
- 算法与数据结构 -- 排序和查找(五)
- java 常量存储_JAVA 存储空间 寄存器 堆栈 堆 常量存储 非RAM存储
- 从工具的奴隶到工具的主人
- 怎样解决外键约束_《设计心理学》|找寻“设计师”所遇的真正问题与解决之道...
- 【课题总结】OpenCV 抠图项目实战(5)自适应阈值抠图
- 忍不住了, 和大家聊聊怎么写简历吧, 关于简历的深度思考
- 73本免费的、语言无关的优秀的编程书籍
- php文章排序,php实现的常见排序算法汇总
- 阿塞拜疆对加密货币收入及利润征税
- install falled update incompatible
- Python 中点法求积分
- 湖北经济学院计算机,湖北经济学院
- 计算机教师培训项目申报书,课题《基于培养教师信息素养的教学研究》申报书(2013年4月—2015年3月)...
- SQL之ADD_MONTHS函数用法
- python 检查图品二维码,识别图片二维码
- Java32位Win7系统Jdk_win7 32位旗舰版配置与调试JDK环境技巧【图文】
- java 螺旋方阵_Java for 螺旋矩阵和蛇型矩阵
- pta 地下迷宫探索
热门文章
- 好心情医生为您总结高考减压的9种方法
- C++类和对象(六):继承
- 为什么我们应该担心大型科技公司的covid跟踪计划
- 【基础】layui form 的 verify 能做哪些功能
- 光的干涉现象模拟与分析
- 质量人都知道:100 - 1 = 0
- bilibili_Linux9_文件系统管理
- 【00】霍格沃兹测试开发学社技术学习笔记之测试方法与理论
- 博客摘录2023年5月13日
- React + Antd 填坑(三)Input elements should have autocomplete attributes (suggested: “current-password“)