Re: [Python] Semplice DB.

2019-08-16 Per discussione Jacopo Cascioli
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.

2019-07-10 Per discussione
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.

2019-07-10 Per discussione Gabriele Battaglia

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