Re: [Python] Semplice DB.
Ciao, mi sembra un caso da DSL, perciò potresti andare con https://github.com/lark-parser/lark o strumenti simili (o fare riferimento all'altro post sui parser) Jacopo Il giorno mer 10 lug 2019 alle ore 15:21 ㎝ ha scritto: > Il giorno mer 10 lug 2019 alle ore 15:00 Gabriele Battaglia > ha scritto: > > > E' come se avessi: > > > > > > nome: xxx, cognome: yyy, data: zzz > > > > > > Ma anche: > > > > > > data: zzz, cognome: yyy, nome: xxx > > > > > > Perciò, quando assegno i dati alla tupla avrò che ogni record presenterà > > campi diversi nella stessa posizione indicizzata: ad esempio db[0][0] ci > > sarà il nome, mentre db[1][0] presenterà la data. > > Io ti consiglierei una lista di dict, o forse ancora meglio una lista > di namedtuple > ``` > >>> d1 = {'nome': 'xxx', 'cognome': 'yyy', 'data': 'zzz'} > >>> d2 = {'data': 'zzz', 'cognome': 'yyy', 'nome': 'xxx'} > >>> d1 == d2 > True > >>> from collections import namedtuple > >>> N = namedtuple('N', 'nome cognome data') > >>> n1 = N(nome='xxx', cognome='yyy', data='zzz') > >>> n2 = N(data='zzz', cognome='yyy', nome='xxx') > >>> n1 == n2 > True > >>> n1[0] > 'xxx' > >>> n2[0] > 'xxx' > ``` > ㎝ > > -- > THE -WARE LICENSE (Revision ㊷): > <㎝@.it> wrote this . As long as you retain this notice you can > do whatever you want with this stuff. If we meet some day, and you > think this stuff is worth it, you can buy me a in return. — ㎝ > ___ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Semplice DB.
Il giorno mer 10 lug 2019 alle ore 15:00 Gabriele Battaglia ha scritto: > E' come se avessi: > > > nome: xxx, cognome: yyy, data: zzz > > > Ma anche: > > > data: zzz, cognome: yyy, nome: xxx > > > Perciò, quando assegno i dati alla tupla avrò che ogni record presenterà > campi diversi nella stessa posizione indicizzata: ad esempio db[0][0] ci > sarà il nome, mentre db[1][0] presenterà la data. Io ti consiglierei una lista di dict, o forse ancora meglio una lista di namedtuple ``` >>> d1 = {'nome': 'xxx', 'cognome': 'yyy', 'data': 'zzz'} >>> d2 = {'data': 'zzz', 'cognome': 'yyy', 'nome': 'xxx'} >>> d1 == d2 True >>> from collections import namedtuple >>> N = namedtuple('N', 'nome cognome data') >>> n1 = N(nome='xxx', cognome='yyy', data='zzz') >>> n2 = N(data='zzz', cognome='yyy', nome='xxx') >>> n1 == n2 True >>> n1[0] 'xxx' >>> n2[0] 'xxx' ``` ㎝ -- THE -WARE LICENSE (Revision ㊷): <㎝@.it> wrote this . As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a in return. — ㎝ ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Semplice DB.
Buondì a tutti. Python 3, programma da console, niente interfaccia. Una cosa molto semplice. Devo creare un parser che legga un file piuttosto grosso che contiene, in formato testo, dei dati già strutturati in una certa maniera. Diciamo che so la combinazione di caratteri con cui inizia la riga con cui parte il dato e so come si conclude l'ultima riga che lo compone. Devo prendere il testo fra questi estremi, elaborarlo e piazzarlo in una struttura più facilmente leggibile ed interrogabile. La struttura scelta è una lista di tuple. La lista fa da indice e mi permette di rimuovere ed aggiungere record con facilità. Le tuple sono tuple perchè non ho necessità di cambiare il loro contenuto ma di leggerlo soltanto accedendovi grazie agli indici. Il problema è che i vari campi dei dati, nel file di testo, non hanno un ordine preciso. So dove iniziano e finiscono i blocchi dei dati, ma all'interno del singolo blocco, non v'è ordine. E' come se avessi: nome: xxx, cognome: yyy, data: zzz Ma anche: data: zzz, cognome: yyy, nome: xxx Perciò, quando assegno i dati alla tupla avrò che ogni record presenterà campi diversi nella stessa posizione indicizzata: ad esempio db[0][0] ci sarà il nome, mentre db[1][0] presenterà la data. Non so se mi sono spiegato. Qualche dritta sulla strada per la risoluzione? Gabry. -- Gabriele Battaglia, IZ4APU (Libero) Sent from TB on Windows 10, Genus Bononiae's computer. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python