import csv import os from bs4 import BeautifulSoup def crawlerXML(file_path): with open(file_path, mode='r', encoding='utf-8') as file: content = file.read() file.close() doc = BeautifulSoup(content, "xml") return doc verpflegung = dict() def fill_dict(kaufbeuren=True): if kaufbeuren: filename = r"C:\Users\Nina\FAUbox\IdeaProjects\patientenbriefe\tables\Kaufbeuren-bearbeitet - Kaufbeuren_bearb.csv" else: filename = r"C:\Users\Nina\FAUbox\IdeaProjects\patientenbriefe\tables\copadocs_patienten_westfalen - Tabelle1.csv" with open(filename, 'r', encoding='utf-8') as csvfile: datareader = csv.reader(csvfile) first = True if not kaufbeuren: counter = 0 for row in datareader: if kaufbeuren and first: first = False continue elif not kaufbeuren and counter < 6: counter += 1 continue else: if kaufbeuren: verpflegungsklasse = row[28] verpflegungsklasse = "k.A" if verpflegungsklasse == "" else verpflegungsklasse aktennummer = "kfb" + row[0] #.split(' ')[0] aktennummer = aktennummer.replace(' ', '') verpflegung[aktennummer] = verpflegungsklasse else: kuerzel = row[0][:3].lower() kuerzel = kuerzel.replace('ü', 'u') #kuerzel.replace('ä', 'a') kuerzel = "mrs" if kuerzel == "mar" else kuerzel aktennummer = kuerzel + row[1] verpflegungsklasse = row[25] aktennummer = aktennummer.replace(' ', '') verpflegung[aktennummer] = verpflegungsklasse fill_dict(kaufbeuren=True) fill_dict(kaufbeuren=False) rootdir = r"C:\Users\Nina\Documents\GitHub\copadocs\data" #cwd = os.getcwd() #rootdir = os.path.join(cwd, "teis") # check directory names in corpus for file in os.listdir(rootdir): d = os.path.join(rootdir, file) if os.path.isdir(d): written = False for subfile in os.listdir(d): kuerzel = subfile[:3] xmlfile = os.path.join(d, subfile) if not os.path.isdir(xmlfile): if subfile[-3:] != "xml": continue print(xmlfile) soup = crawlerXML(xmlfile) aktennummer = kuerzel + soup.find("idno").text aktennummer = aktennummer.replace(' ', '') klasse = verpflegung[aktennummer] state = soup.particDesc.state for p in state.find_all("p"): if p.text.startswith("Verpflegungsklasse"): p.decompose() verpflegungs_tag = soup.new_tag("p") verpflegungs_tag.insert(0, "Verpflegungsklasse: " + klasse) state.insert(6, verpflegungs_tag) text = str(soup) with open(xmlfile, mode='w', encoding='utf-8') as file: # file.write(str(doc.prettify(formatter="none"))) file.write(text) file.close()