parsing_utilities.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import unicodedata
  2. #%% funzione combinazioni <> è chiamata da interpreter
  3. ## DA MODIFICARE PER DB CIFRATO
  4. def combinations(s):
  5. result = []
  6. start = s.find("<")
  7. end = s.find(">")
  8. if start == -1 or end == -1:
  9. return [s]
  10. items = s[start + 1:end].split(",")
  11. for item in items:
  12. result.extend([s[:start] + item + rest for rest in combinations(s[end + 1:])])
  13. return result
  14. #%% funzione interprete, sta alla base di ogni ricerca
  15. ## DA MODIFICARE PER DB CIFRATO
  16. def interpreter (data):
  17. clean_data= data.replace("*", "%").replace("?", "_").replace(" ","").replace("'", "''").replace("’", "''")
  18. return combinations(clean_data)
  19. # %% funzione iniziale raddoppiata, è chiamata dalle funzioni di ricerca con iniziale raddoppiata
  20. def inizialeraddoppiata (data):
  21. doubleddata=[]
  22. for el in data:
  23. if el[1] != "%" and "_":
  24. doubleddata = doubleddata + ["'"+ el[1] + el[1:]]
  25. return doubleddata
  26. # %% funzione normalizza stringa (ricerca espansa), è chiamata dalle funzioni di ricerca espansa
  27. ## DA MODIFICARE PER DB CIFRATO
  28. def normalize(stringa):
  29. return unicodedata.normalize('NFKD', stringa).encode('ASCII', 'ignore').decode('utf-8')
  30. def list_normalize(lista):
  31. return [normalize(stringa) for stringa in lista]