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