Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. import subprocess
  2. import csv
  3. import sys
  4. import lxml
  5. from lxml import etree
  6. import xml.dom.minidom
  7. import xml.etree.ElementTree as ET
  8. PATH_EXE = "tomitaparser.exe"
  9. PATH_CONF = "config.proto"
  10. TEST_F = "tests_f.csv"
  11. TEST_M = "tests_m.csv"
  12.  
  13.  
  14.  
  15. def check_programm(in_data, out_data):
  16. proc = subprocess.Popen([PATH_EXE,PATH_CONF],
  17. stdin = subprocess.PIPE ,stdout = subprocess.PIPE)
  18. with open('input.txt', 'w', encoding='utf-8') as f:
  19. f.write(in_data)
  20.  
  21. proc.communicate()
  22.  
  23. with open('output.xml', 'r', encoding='utf-8') as f:
  24. data = f.read()
  25.  
  26. tree = ET.parse('input.txt')
  27. tree.findall('Person')[0].text
  28. # obj_value=json.loads(data)
  29.  
  30. # tree = ET.parse("output.xml")
  31. # root = tree.getroot()
  32. # doc=xml.dom.minidom.parse("output.xml")
  33.  
  34. # list=doc.getElementsByTagName("Person")
  35.  
  36.  
  37. # root=tree.getroot()
  38.  
  39.  
  40. def parseBookXML(xmlFile):
  41. with open(xmlFile) as fobj:
  42. xml = fobj.read()
  43.  
  44. root = etree.fromstring(xml)
  45.  
  46. book_dict = {}
  47. persons = []
  48.  
  49. for persons in root.getchildren():
  50. for elem in persons.getchildren():
  51. if not elem.text:
  52. text = "None"
  53. else:
  54. text = elem.text
  55. print(elem.tag + " => " + text)
  56. book_dict[elem.tag] = text
  57.  
  58. if persons.tag == "Persons":
  59. books.append(book_dict)
  60. book_dict = {}
  61.  
  62. return books
  63.  
  64. if __name__ == "__main__":
  65. parseBookXML("output.xml")
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72. data=data[:-3]
  73.  
  74.  
  75.  
  76. fio = data.split(' ')
  77.  
  78.  
  79.  
  80. for el in out_data:
  81. el = el.replace(' ', '')
  82. #for i in range(0,3):
  83. # out_data[i] = out_data[i].lower()
  84. out_data[2] = out_data[2][:-1]
  85.  
  86. for el in fio:
  87. el = el.replace(' ', '')
  88. for i in range(0, 3):
  89. if ((fio[i] != "_") and (fio[i] != out_data[i])):
  90. sys.stderr.write("text : {}, uncorrectly recognized,\n Awaited:{}\n Recived:{}\n".format(in_data, out_data, fio))
  91. break
  92. proc.kill()
  93.  
  94. with open(TEST_F, "r") as csvtable:
  95. big_input_data = csv.reader(csvtable, delimiter=';')
  96. for row in big_input_data:
  97. in_str = " ".join(row[0:3])
  98. out_res = row[4:7]
  99. check_programm(in_str, out_res)
  100.  
  101.  
  102.  
  103. #
  104. #with open(TEST_M, "r") as csvtable:
  105. # big_input_data = csv.reader(csvtable, delimiter=';')
  106. # for row in big_input_data:
  107. # in_str = " ".join(row[0:3])
  108. # out_res = row[4:7]
  109. # check_programm(in_str, out_res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement