import re import json import pprint orari_json = open("9658b6.json", 'rb') # http://databin.pudo.org/t/9658b6.json orari_full = json.loads(orari_json.read().decode()) orari = [o[2] for o in orari_full["rows"]] giorni = {'lunedì': 'Mo', 'martedì': 'Tu', 'mercoledì': 'We', 'giovedì': 'Th', 'venerdì': 'Fr', 'sabato': 'Sa', 'sabati': 'Sa', 'domenica': 'Su', 'domeniche': 'Su'} mesi = {'gennaio': 'Jan', 'febbraio': 'Feb', 'marzo': 'Mar', 'aprile': 'Apr', 'maggio': 'May', 'giugno': 'Jun', 'luglio': 'Jul', 'agosto': 'Aug', 'settembre': 'Sep', 'ottobre': 'Oct', 'novembre': 'Nov', 'dicembre': 'Dec'} def hours(testo): 'Extract opening hours.' hhmm = re.compile('\d{1,2}[:\.]\d\d') dom = re.compile('(prim[oaei]|second[oaei]|terz[oaei]|quart[oaei]|ultim[oaei])( \w+)? ({})'.format("|".join(giorni.keys()))) tokens = testo.split('. ') for t in tokens: l = [] if hhmm.search(t): l.append({'hou': t}) if any([giorno in t.lower() for giorno in giorni]): l.append({'dow': t}) if any([mese in t.lower() for mese in mesi]): l.append({'mon': t}) if dom.search(t): l.append({'dom': t}) pprint.pprint(l) def osm(testo, diz): for k in diz: testo = testo.replace(k, diz[k]) testo = testo.replace(k.title(), diz[k]) return testo def osm_hours(testo): testo = re.sub(r'(\d{1,2})[\.,](\d\d)', r'\1:\2', testo) testo = re.sub(r'([^\d])(\d:\d\d)', r' 0\2', testo) return testo for testo in orari: testo = osm(testo, giorni) testo = osm(testo, mesi) testo = osm_hours(testo) print(testo)