必威体育Betway必威体育官网
当前位置:首页 > IT技术

解析drugbank xml文件的代码。(先要把文件里的换行符删干净了)

时间:2019-11-01 15:15:41来源:IT技术作者:seo实验室小编阅读:80次「手机版」
 

drugbank

# -*- coding: utf-8 -*-
"""
Created on Wed Dec  5 16:43:28 2018

@author: chealia
"""

import xlrd
from  xlutils.copy import copy
from xml.parsers.expat import ParserCreate

rb=xlrd.open_workbook(r'c:\users\chealia\201812\drug.xlsx')
wb=copy(rb)
global i
i=0
global j
j=0
global flag
flag=0
c1=wb.get_sheet(0)

class DefaultSaxhandler(object):
    def start_element(self,name,attrs):
        global i  #全局变量在使用前还要再声明一次,切记!
        global flag
        global j
        if i>65535:
            return
        if name=='drug' and flag==0:
            c1.write(i,0,attrs.get('type'))
            flag=0
            j=i #第j行就是第i行
            i=i+1 
            
        if name=='drugbank-id' and flag==0:            
            flag=1
        if name=='name' and flag==10:
            flag=2
        if name=='description' and flag==0:            
            flag=3
        if name=='groups' and flag==0:
            flag=4
        if name=='group' and flag==4:
            flag=41
        if name=='indication' and flag==0:
            flag=5
        if name=='products' and flag==6:
            flag=61
        if name=='name' and flag==61: #产品内的详细信息
            flag=62
        if name=='pathways' and flag==7:#products之后还有pathways里会出现<drug>
            flag=8
            
    def end_element(self,name):
        global flag
        if name=='drugbank-id' and flag==1:
            flag=10 #drugbank-id之后恢复
        if name=='name' and flag==2:
            flag=0
        if name=='description' and flag==3:            
            flag=0
        if name=='group' and flag==41:
            flag=0
        if name=='indication' and flag==5:
            flag=6
        if name=='name' and flag==62: 
            flag=7
        if name=='products' and flag==61: #如果有产品但是没有name,flag终结于7
            flag=7
        if name=='pathways' and flag==8:
            flag=9
        if name=='drug' and flag==9:
            flag=0
    def char_data(self,text):
        global flag
        if flag==1:
            c1.write(j,1,text)
        if flag==2:
            c1.write(j,2,text)
        if flag==3:
            c1.write(j,3,text)
            
        if flag==41:
            c1.write(j,4,text)
        if flag==5:   #5是适应症
            c1.write(j,5,text)
        if flag==62:
            c1.write(j,6,text)
            print('sax:char_data:%s'%text)
        
            



with open(r'c:\users\chealia\201812\full database2.xml','r',encoding='utf-8') as f:
    xml=f.read()
print(type(xml))
handler=DefaultSaxHandler()
parser=ParserCreate()
parser.StartElementHandler=handler.start_element
parser.EndElementHandler=handler.end_element
parser.CharacterDataHandler=handler.char_data
parser.Parse(xml)
wb.save(r'c:\users\chealia\201812\drug.xls')

文章最后发布于: 2019-02-26 14:50:52

相关阅读

win10 ISO文件下载

转载地址:https://blog.csdn.net/blogshinelee/article/details/85199611以上就是win10 iso文件的下载。

done后面接重定向文件

代码示例 #!/bin/bash while read line do disk=`echo $line|awk -F" " '{print $1}'` mount_dir=`echo $line |awk -F

jar文件和.so文件的区别

so文件 .so文件是Linux系统的可执行文件,相当于windows上的exe执行文件,只可以在Linux系统运行。 so文件就是常说的动态链接库,都是C

怎么删除手机文件?以删除微信记录为例解析操作方法

怎么删除手机文件?现在通过微信传送手机文件成了最普遍的现象了,因为非常的方便快捷,尤其是一些办公人员,大多通过微信传送WPS、Word

字典制作工具-创建自己的密码字典文件

crunch简介 crunch是一款运行在linux中的字典生成工具,可以灵活的定制自己的密码字典文件。kali系统中默认安装有crunch工具  cr

分享到:

栏目导航

推荐阅读

热门阅读