Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import subprocess
- import csv
- import sys
- import lxml
- from lxml import etree
- import xml.dom.minidom
- import xml.etree.ElementTree as ET
- PATH_EXE = "tomitaparser.exe"
- PATH_CONF = "config.proto"
- TEST_F = "tests_f.csv"
- TEST_M = "tests_m.csv"
- def check_programm(in_data, out_data):
- proc = subprocess.Popen([PATH_EXE,PATH_CONF],
- stdin = subprocess.PIPE ,stdout = subprocess.PIPE)
- with open('input.txt', 'w', encoding='utf-8') as f:
- f.write(in_data)
- proc.communicate()
- with open('output.xml', 'r', encoding='utf-8') as f:
- data = f.read()
- tree = ET.parse('input.txt')
- tree.findall('Person')[0].text
- # obj_value=json.loads(data)
- # tree = ET.parse("output.xml")
- # root = tree.getroot()
- # doc=xml.dom.minidom.parse("output.xml")
- # list=doc.getElementsByTagName("Person")
- # root=tree.getroot()
- def parseBookXML(xmlFile):
- with open(xmlFile) as fobj:
- xml = fobj.read()
- root = etree.fromstring(xml)
- book_dict = {}
- persons = []
- for persons in root.getchildren():
- for elem in persons.getchildren():
- if not elem.text:
- text = "None"
- else:
- text = elem.text
- print(elem.tag + " => " + text)
- book_dict[elem.tag] = text
- if persons.tag == "Persons":
- books.append(book_dict)
- book_dict = {}
- return books
- if __name__ == "__main__":
- parseBookXML("output.xml")
- data=data[:-3]
- fio = data.split(' ')
- for el in out_data:
- el = el.replace(' ', '')
- #for i in range(0,3):
- # out_data[i] = out_data[i].lower()
- out_data[2] = out_data[2][:-1]
- for el in fio:
- el = el.replace(' ', '')
- for i in range(0, 3):
- if ((fio[i] != "_") and (fio[i] != out_data[i])):
- sys.stderr.write("text : {}, uncorrectly recognized,\n Awaited:{}\n Recived:{}\n".format(in_data, out_data, fio))
- break
- proc.kill()
- with open(TEST_F, "r") as csvtable:
- big_input_data = csv.reader(csvtable, delimiter=';')
- for row in big_input_data:
- in_str = " ".join(row[0:3])
- out_res = row[4:7]
- check_programm(in_str, out_res)
- #
- #with open(TEST_M, "r") as csvtable:
- # big_input_data = csv.reader(csvtable, delimiter=';')
- # for row in big_input_data:
- # in_str = " ".join(row[0:3])
- # out_res = row[4:7]
- # check_programm(in_str, out_res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement