Python: обработка исключений XML ParseError

В приведенном ниже коде я пытаюсь запросить данные XML с помощью ключа (RxCUI), хранящегося в файле CSV. Но я не в состоянии обработать исключения. Я сталкиваюсь с "ParseError", и я не могу найти точку ошибки. Я очень новичок в кодировании с Python и XML. Пожалуйста, дайте мне знать, как я могу справиться с этими исключениями и помочь мне улучшить мой код.

#ATC_CSV Generation
import requests
import xml.etree.ElementTree as ET
import csv
import re
RxCUI = r'/home/ec2-user/SageMaker/rxnorm_rxcui.csv'
RxCUI_output = '/home/ec2-user/SageMaker/rx_atc.csv'
list1 = []
with open(RxCUI, 'r') as f:
    Rxreader = csv.reader(f, delimiter = ' ')
    for row in f:
        row1 = row.split('|')
        list1 = row1 + list1
field_names = ['RxCUI', 'ATC_Code', 'Drug_Name', 'Drug_Class', 'Pharmacological_Group', 'Therapeutic indication', 'Anatomical Group']

with open(RxCUI_output, 'w') as f1:
    csvwriter = csv.writer(f1, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    csvwriter.writerow(field_names)
    for i in range(0,(len(list1)-1)):
        rxcui = list1[i]
        url = "https://rxnav.nlm.nih.gov/REST/rxcui/{}/hierarchy?src=ATC&oneLevel=0".format(rxcui)
        r = requests.get(url)
        xml = ET.fromstring(r.content)
        #rex = re.compile("^[A-Z][0-9]{2}[A-Z]{2}[0-9]{2}$")
        str1 = 'NO ATC DATA FOUND'
        for element in xml.findall( 'tree/title' ):
            if  str1 in element.text:
                csvwriter.writerow([rxcui,None, None, None, None, None, None])

            else:
                print(rxcui)
                try:
                    csvwriter.writerow([rxcui,(xml[0][1][0].text), (xml[0][1][1].text), (xml[0][2][1].text), (xml[0][3][1].text), (xml[0][4][1].text), (xml[0][5][1].text)])
                except ParseError:
                    print('Error at {}'.format(rxcui))

Я получаю ошибку:

Error Log :
Traceback (most recent call last):

  File "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2862, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-150-3bd574574ea3>", line 23, in <module>
    xml = ET.fromstring(r.content)

  File "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/xml/etree/ElementTree.py", line 1314, in XML
    parser.feed(text)

  File "<string>", line unknown
ParseError: mismatched tag: line 1, column 978

0 ответов

Другие вопросы по тегам