# Importing libraries from numpy import genfromtxt, savetxt from time import time from datetime import datetime import models import os, re from database import engine, SessionLocal from pytz import timezone def Load_Data(file_name): #data = genfromtxt(file_name, delimiter=';', skip_header=1, converters={0: lambda s: str(s)}) #str2date = lambda x: datetime.strptime(x, '%d-%m-%y') data = genfromtxt(file_name, delimiter=';', dtype=None, skip_header=0, encoding='utf-8-sig') return data.tolist() def extract_values(text): # Regular expressions to match the required fields regex_patterns = { 'Auftraggeber': r'Auftraggeber: (.*?) (Verwendungszweck|Zahlungsreferenz|IBAN|BIC)', 'Verwendungszweck': r'Verwendungszweck: (.*?) (Zahlungsreferenz|IBAN|BIC)', 'Zahlungsreferenz': r'Zahlungsreferenz: (.*?) (Verwendungszweck|IBAN|BIC)', 'IBAN': r'IBAN Auftraggeber: (.*?) ', 'BIC': r'BIC Auftraggeber: (.*?)$' } # Initialize an empty list to store extracted information extracted_info = [] # Initialize an empty dictionary to store information from this row row_info = {} # Extract information using regular expressions for key, pattern in regex_patterns.items(): match = re.search(pattern, text) if match: row_info[key] = match.group(1) else: row_info[key] = None # Append the extracted information from this row to the list extracted_info.append(row_info) return extracted_info if __name__ == "__main__": t = time() db = SessionLocal() models.Base.metadata.create_all(bind=engine) try: home_directory = os.path.expanduser('~') source_csv = os.path.join(home_directory, "OneDrive", "Dokumente", "SUST", "UmsatzListe_AT493443700000113407_20241212_095142_mod.csv") target_csv = source_csv.replace(".csv", "_out.csv") data = Load_Data(source_csv) tz = timezone('UTC') # Replace with your desired timezone outData = [] for i in data: if ('Auftraggeber' in i[1]): # extract key-value pairs Auftraggeber, Verwendungszweck, Zahlungsreferenz, IBAN new_list = extract_values(i[1]) if len(new_list) > 0: outData.append([i[0], new_list[0].get('Auftraggeber'), new_list[0].get('Zahlungsreferenz'), new_list[0].get('Verwendungszweck'), new_list[0].get('IBAN'), i[2], i[3].replace(',','.'), i[4], i[5]]) savetxt(target_csv, outData, delimiter=";", encoding='utf-8', header='valuta_date;client;reference;intended;IBAN;entry_date;amount;currency;timestamp', fmt='%s') except Exception as e: print (e) finally: print("Time elapsed: " + str(time() - t) + " s.") #0.091s