1234567891011121314151617181920212223242526272829303132333435 |
- import unicodedata
- #%% funzione combinazioni <> è chiamata da interpreter
- ## DA MODIFICARE PER DB CIFRATO
- def combinations(s):
- result = []
- start = s.find("<")
- end = s.find(">")
- if start == -1 or end == -1:
- return [s]
- items = s[start + 1:end].split(",")
- for item in items:
- result.extend([s[:start] + item + rest for rest in combinations(s[end + 1:])])
- return result
- # Funzione interprete, preprocessa ogni ricerca
- def interpreter (data):
- clean_data= data.replace("\\*", "#ACTUAL*#").replace("\\?", "#ACTUAL?#").replace("*", "\\%").replace("?", "\\_").replace(" ","").replace("'", "''").replace("’", "''").replace('#ACTUAL%#', '*').replace('#ACTUAL_#', '?')
- return combinations(clean_data)
- # %% funzione iniziale raddoppiata, è chiamata dalle funzioni di ricerca con iniziale raddoppiata
- def inizialeraddoppiata (data):
- doubleddata=[]
- for el in data:
- if el[1] != "%" and "_":
- doubleddata = doubleddata + ["'"+ el[1] + el[1:]]
- return doubleddata
- # %% funzione normalizza stringa (ricerca espansa), è chiamata dalle funzioni di ricerca espansa
- ## DA MODIFICARE PER DB CIFRATO
- def normalize(stringa):
- return unicodedata.normalize('NFKD', stringa).encode('ASCII', 'ignore').decode('utf-8')
- def list_normalize(lista):
- return [normalize(stringa) for stringa in lista]
|