Re: [Python] Parsing di un file ldif invalido

2022-09-15 Per discussione Valerio Pachera
Il giorno mer 14 set 2022 alle ore 15:36 Marco Giusti <
marco.giu...@posteo.de> ha scritto:

>
>
> #!/usr/bin/env python3
>
> import sys
> from ldif3 import LDIFParser
>
> ldif_path = sys.argv[1]
>
> with open(ldif_path, 'rb') as ldif_file:
>  parser = LDIFParser(ldif_file)
>
>  for dn, entry in parser.parse():
>  try:
>  print(dn, entry['cn'])
>  except ValueError:
>  continue
>
>
> Ciao, grazie della risposta ma l'errore avviene nel momento in cui la
variabile dn viene popolata, prima del try.
Credo che non sia possibile gestire l'eccezione in questa fase :-(.
Dovrebbe essere gestita dal modulo ldif3.
Mentre scrivevo questo sono andata a spulciare la documentazione della
libreria  e fra i parametri ho
trovato:
"strict (boolean) – If set to False, recoverable parse errors will produce
log warnings rather than exceptions."

Ho modificato lo script come segue:

---
#!/usr/bin/env python3

import sys
from pprint import pprint
from ldif3 import LDIFParser

ldif_path = sys.argv[1]

with open(ldif_path, 'rb') as ldif_file:
parser = LDIFParser(ldif_file, *strict=False*)

for dn, entry in parser.parse():
pprint(dn)
pprint(entry)
---

Ho eseguito lo script:

---
./test.py bad_sample.ldif 2> error.log

'cn=*Mario, Rossi*,mail=mario.ro...@domain.com'
OrderedDict([('objectclass',
  ['top',
   'person',
   'organizationalPerson',
   'inetOrgPerson',
   'mozillaAbPersonAlpha']),
 ('givenName', ['Mario Rossi']),
 *('cn', ['Mario, Rossi']),*
 ('mail', ['mario.ro...@domain.com']),
 ('modifytimestamp', ['1632815299'])])

cat error.log
No valid string-representation of distinguished name cn=Mario, Rossi,mail=
mario.ro...@domain.com.
---

In questo modo lo script non si blocca e ho comunque traccia dei contatti
problematici da sistemare in sorgente!
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing di un file ldif invalido

2022-09-14 Per discussione Marco Giusti

On 14.09.2022 14:55, Valerio Pachera wrote:

Buongiorno a tutti, ho la seguente esigenza: parsare un file ldif
prodotto dall'esportazione di una rubrica di Thunderbird.

Prendiamo questo ldif come esempio:
---

dn: cn=Mario Rossi,mail=mario.ro...@domain.com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mozillaAbPersonAlpha
givenName: Mario Rossi
cn: Mario Rossi
mail: mario.ro...@domain.com
modifytimestamp: 1632815299
---

E il codice necessario per fare il parsing:
---
#!/usr/bin/env python3

import sys
from ldif3 import LDIFParser

ldif_path = sys.argv[1]

with open(ldif_path, 'rb') as ldif_file:
parser = LDIFParser(ldif_file)

for dn, entry in parser.parse():
print(dn, entry['cn'])
---


#!/usr/bin/env python3

import sys
from ldif3 import LDIFParser

ldif_path = sys.argv[1]

with open(ldif_path, 'rb') as ldif_file:
parser = LDIFParser(ldif_file)

for dn, entry in parser.parse():
try:
print(dn, entry['cn'])
except ValueError:
continue


___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] Parsing di un file ldif invalido

2022-09-14 Per discussione Valerio Pachera
Buongiorno a tutti, ho la seguente esigenza: parsare un file ldif prodotto
dall'esportazione di una rubrica di Thunderbird.

Prendiamo questo ldif come esempio:
---
dn: cn=Mario Rossi,mail=mario.ro...@domain.com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mozillaAbPersonAlpha
givenName: Mario Rossi
cn: Mario Rossi
mail: mario.ro...@domain.com
modifytimestamp: 1632815299
---

E il codice necessario per fare il parsing:
---
#!/usr/bin/env python3

import sys
from ldif3 import LDIFParser

ldif_path = sys.argv[1]

with open(ldif_path, 'rb') as ldif_file:
parser = LDIFParser(ldif_file)

for dn, entry in parser.parse():
print(dn, entry['cn'])
---

Funziona perfettamente fino a che non trovi un contatto che una virgola nel
CN.
Esempio di ldif problematico:
---
dn: cn=Mario, Rossi,mail=mario.ro...@domain.com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mozillaAbPersonAlpha
givenName: Mario Rossi
cn: Mario, Rossi
mail: mario.ro...@domain.com
modifytimestamp: 1632815299
---

Errore che si ottiene:
---
Traceback (most recent call last):
  File "./simple.py", line 11, in 
for dn, entry in parser.parse():
  File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 384, in parse
yield self._parse_entry_record(block)
  File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 360, in
_parse_entry_record
self._check_dn(dn, attr_value)
  File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 339, in
_check_dn
self._error('No valid string-representation of '
  File "/usr/local/lib/python3.8/dist-packages/ldif3.py", line 330, in
_error
raise ValueError(msg)
ValueError: No valid string-representation of distinguished name cn=Mario,
Rossi,mail=mario.ro...@domain.com.
---

Nota: il CN a volte è espresso come base64 e al suo interno ci può essere
una virgola che rompe la sintassi.

*E' possibile "ignorare" i valori errati con un try?* Come applicarlo al
ciclo?
https://stackoverflow.com/questions/39889811/python-ldif3-parser-and-exception-in-for-loop

Ogni suggerimento è ben accetto :-)
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-12-14 Per discussione Pietro Battiston
Il giorno lun, 25/11/2013 alle 13.12 +0100, Pietro Battiston ha scritto:
Il giorno dom, 24/11/2013 alle 10.06 +0100, Dario Bertini ha scritto:
  [...]
  XML, Json, Yaml sono solo formati... non costringono a gestire il
file
  in un modo particolare
  
  https://pypi.python.org/pypi/ijson/
  
 
 
 O no... letto ora questa email... e giusto ieri mattina mi ero scritto

https://github.com/toobaz/redis-dump-load/blob/incremental_loading/incremental_json.py
 dopo avere letto inutilmente

http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json
 ...


Il giorno lun, 25/11/2013 alle 13.39 +0100, Dario Bertini ha scritto:
FWIW, era il primo risultato su google, cercando
 
 event parsing json python
 


Facendo giusto per curiosità un benchmark mi sono preso una piccola
rivincita... ed a quel punto ne ho fatto una mini libreria:
http://pietrobattiston.it/jsaone

ciao

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-12-14 Per discussione Dario Bertini
congrats!

ho dato un'occhiata a json_load_test.py curioso di vedere il
benchmark, e però non c'è la stringa json da passargli in input

per rendere il tutto più riproducibile non sarebbe meglio aggiungere
anche il file che gli hai passato in input? (oppure c'era ma me lo
sono perso?)

(ovviamente, fare fuzz testing sarebbe la ciliegina sulla torta :P ...
avendone tempo sarei curioso di farlo, visto che con python non l'ho
mai fatto)


-- 
xmpp: berda...@gmail.com
bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP
gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just
for signing commits)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-12-14 Per discussione Pietro Battiston
Il giorno sab, 14/12/2013 alle 16.22 +, Dario Bertini ha scritto:
 congrats!
 
 ho dato un'occhiata a json_load_test.py curioso di vedere il
 benchmark, e però non c'è la stringa json da passargli in input
 

No, va usato con un file json esistente, i testi li ho fatti con un dump
di database redis con cui sto lavorando.

 per rendere il tutto più riproducibile non sarebbe meglio aggiungere
 anche il file che gli hai passato in input? (oppure c'era ma me lo
 sono perso?)
 

Sì, hai ragione... solo che era un file da 174 MB (e d'altra parte i
risultati mi interessano principalmente per file grossi).

Però potrei inserire del codice che genera al volo una stringa e la
passa come Stream(). TODO.

 (ovviamente, fare fuzz testing sarebbe la ciliegina sulla torta :P ...
 avendone tempo sarei curioso di farlo, visto che con python non l'ho
 mai fatto)

Sarei molto curioso anche io! Confesso che fino ad ora ho solo
verificato che il mio codice funzionasse su svariati json ben formati, e
trovasse lo stesso numero di elementi... insomma, nel setup.py ho messo
un meritatissimo 'Development Status :: 4 - Beta'  ;-)

ciao

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-26 Per discussione Daniele Varrazzo

On 2013-11-25 15:34, Roberto Preziusi wrote:
Il giorno 22 novembre 2013 20:55, Daniele Varrazzo p...@develer.com 
ha

scritto:



Domanda mia: ve lo siete inventati voi quel formato?

Perchè state reinventando l'acqua calda: non dovreste scrivere un 
nuovo

parser se potete usare un linguaggio diverso. Quale? Ce ne sono a
tonnellate pronti per essere usati in Python:



No, non ce lo siamo inventati noi.
E' la conf di un device di rete (Juniper) che purtroppo bisogna 
parsare per

salvare questa conf su db..

Noto che è possibile avere output così o XML e quindi vi chiedevo 
quale
fosse il metodo piu' simpatico e veloce per parsare l'output senza 
troppe

complicazioni.


Se è del tutto indifferente per voi usare quel formato o xml, con xml 
ed etree non è un problema.



Adesso cerco una regexp buona per ora ho trovato solo questo modo qui 
con

sed:

sed -n '/address-set ABC_DEF/,/}' myfilename.conf

che non so come implementare con python.
idee?


Non c'è nessuna difficoltà: se si vuole parsarlo con le regexp bisogna 
solo conoscere le regexp. Non ci vogliono idee.



Poi provero' a vedere anche come farlo via xml usando qualche 
libreria in

python
e quando avro' imparato in entrambi i modi..  deciderò :)


Per quello usa questo: 
http://docs.python.org/2/library/xml.etree.elementtree.html


-- Daniele
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-26 Per discussione Daniele Varrazzo

On 2013-11-24 08:32, Giovanni Porcari wrote:

Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo
p...@develer.com ha scritto:


Ma un file di configurazione: ma che ci vuole sax per parsare un 
paio di fetenti coppie chiave valore? Ancora a pensare solo per un 
secondo se un valore logico lo devi scrivere come 1, true oppure v? 
C'è di meglio, no?



db
  development implementation=postgres host=localhost port='5432'
password=mypassword user=myuser/



Io ad esempio lo leggo così:

config=Bag(myfile)
development_port=config('db.development?port')

'5432'


Esattamente quello che intendevo: lo leggi male. L'interfaccia è fica e 
comodissima, ne sono certo, ma l'informazione nel file è incompleta. 
Passa la stringa 5432 ad una funzione socket e quella esploderà:


 s.listen(('localhost', '5432'))
TypeError: an integer is required

Tra l'altro 5432 non è chiaramente una porta valida: è maggiore di 
65535:


 5432  65535
True

Ad un file di configurazione si chiedono poche cose. Tra queste secondo 
me sono abbastanza importanti:


- essere editabile a mano
- essere fortemente tipizzato

e ad xml mancano entrambe.

-- Daniele

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-26 Per discussione Manlio Perillo

On 26/11/2013 12:23, Daniele Varrazzo wrote:

[...]
Ad un file di configurazione si chiedono poche cose. Tra queste secondo
me sono abbastanza importanti:

- essere editabile a mano
- essere fortemente tipizzato



Il formato .ini, disponibile in ConfigParser, certamente non è 
tipizzato, dato che il tipo (bool, int, float, boolean) deve essere 
specificato da chi legge il file.


Gli unici formati di file che conosco in cui il tipo è manifesto (o 
meglio, in cui il tipo è specificato da chi scrive il file di 
configurazione) sono YAML e JSON.  La differenza tra YAML e JSON è che 
il primo è estendibile.


Volendo, anche XML può essere tipizzato, se ci attacchi uno schema.
Ma non sono a conoscenza (e non ho voglia di cercare, dato che non è 
molto pratico) di parser scritti in Python che leggono tale schema e 
convertono il testo XML nel tipo specificato.




Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-26 Per discussione Giovanni Porcari

Il giorno 26/nov/2013, alle ore 12:23, Daniele Varrazzo p...@develer.com ha 
scritto:

 On 2013-11-24 08:32, Giovanni Porcari wrote:
 Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo
 p...@develer.com ha scritto:
 
 Ma un file di configurazione: ma che ci vuole sax per parsare un paio di 
 fetenti coppie chiave valore? Ancora a pensare solo per un secondo se un 
 valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, no?
 
 db
  development implementation=postgres host=localhost port='5432'
 password=mypassword user=myuser/
 
 Io ad esempio lo leggo così:
 
 config=Bag(myfile)
 development_port=config('db.development?port')
 '5432'
 
 Esattamente quello che intendevo: lo leggi male. L'interfaccia è fica e 
 comodissima, ne sono certo, ma l'informazione nel file è incompleta. Passa la 
 stringa 5432 ad una funzione socket e quella esploderà:
 
 s.listen(('localhost', '5432'))
TypeError: an integer is required
 
 Tra l'altro 5432 non è chiaramente una porta valida: è maggiore di 65535:
 
 5432  65535
True
 
 Ad un file di configurazione si chiedono poche cose. Tra queste secondo me 
 sono abbastanza importanti:
 
 - essere editabile a mano
 - essere fortemente tipizzato
 
 e ad xml mancano entrambe.


Beh Daniele non volevo complicare le cose tirando in ballo anche la 
tipizzazione.
Ma hai ragione e infatti nel nostro uso abituale abbiamo modo di tipizzare
facilmente gli attributi usando il suffisso '::'+tipo mentre volendo tipizzare
il contenuto usiamo l'attributo 'riservato' _T.
In questo caso l'esempio completo sarebbe stato port=5432::L 
invece di port=5432.

Mi rendo conto che possono sembrare soluzioni 'acrocchiate' ma nella nostra
esperienza la leggibilità e la flessibilità sono buone e il formato
e semplice da spiegare e molto flessibile.

Usando un parser nostro possiamo usare tutti i tipi che vogliamo e il 
contenitore
che risulta è molto facile da usare e si mappa immediatamente ad un tree
in una pagina web. Quindi la pigrizia ci fa amare XML magari il dialetto nostro
che è per artigiani pigri ;)

G



___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-26 Per discussione Giovanni Porcari

Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo 
manlio.peri...@gmail.com ha scritto:

 Gli unici formati di file che conosco in cui il tipo è manifesto (o meglio, 
 in cui il tipo è specificato da chi scrive il file di configurazione) sono 
 YAML e JSON.  La differenza tra YAML e JSON è che il primo è estendibile.


Il difetto maggiore che trovo in JSON è la mancata tipizzazione
di date e datetime.  Il che mi costringe a mettere degli Encoder
specializzati in python del tipo:

class JsonEncoderJS(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime.time):
return '%s::H' %str(obj)
elif isinstance(obj, Decimal):
return str(obj)
elif isinstance(obj, datetime.datetime):
return '%s::DH' %str(obj)
elif isinstance(obj, datetime.date):
return '%s::D' %str(obj)
return json.JSONEncoder.default(self, obj)

Quindi anche in questo caso usando la sintassi col ::.

Ho preso anche in esame serpent (https://pypi.python.org/pypi/serpent)
ma ormai avevo già le mie porcatine (porcatine ovvero da 'Porcari')
funzionanti e la pigrizia mi ha fatto restare col mio acrocchio XML.


G
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-26 Per discussione Manlio Perillo

On 26/11/2013 14:36, Giovanni Porcari wrote:


Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo 
manlio.peri...@gmail.com ha scritto:


Gli unici formati di file che conosco in cui il tipo è manifesto (o meglio, in 
cui il tipo è specificato da chi scrive il file di configurazione) sono YAML e 
JSON.  La differenza tra YAML e JSON è che il primo è estendibile.



Il difetto maggiore che trovo in JSON è la mancata tipizzazione
di date e datetime.


Si, questa è una limitazione abbastanza irritante.
Io infatti per i files di configurazione uso YAML, con un decoder custom 
che implementa diverse estensioni (come ad esempio, specificare un file, 
directory, un locale, un engine sqlalchemy, pkg resources, e così via).


Ecco un esempio:

paths:
  template: template !pkg_resource_path app:templates
  static: !pkg_resource_path app:static
  flatpages: flatpages !pkg_resource_path app:flatpages
  media: media !make_dir [media]
  tmp: tmp !make_dir [tmp]
  template_cache: template_cache !make_dir [*tmp, mako_modules]

defs:
  charset: charset utf-8

  lookup: lookup !make_template
directories: [*template, *flatpages]
module_directory: *template_cache
output_encoding: *charset
default_filters: [unicode, h, trim]

  engine: engine !make_engine
url: postgresql://x:y@localhost/z
echo: false

python:
  logger: !make_global_logger
filename: /tmp/app.log
level: DEBUG

Il decoder produce un dizionario a cui si può accedere, ad esempio, con:

conf['python.logger'], conf['paths.template'] e così via.

 [...]



Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Pietro Battiston
Il giorno dom, 24/11/2013 alle 10.06 +0100, Dario Bertini ha scritto:
 2013/11/24 Daniele Varrazzo p...@develer.com:
  Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
  strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa ho
  scritto un sistema di importazione ed esportazione di una struttura enorme
  da postgres (la gestione contabile di un nostro programma, centinaia di mb
  al mese di partita doppia): per quello xml è stato perfetto. Struttura
  modellata come si deve:meglio che in Json. Json o Yaml mi avrebbero
  costretto a caricare tutto in memoria, con sax il caricamento è progressivo.
  Semplicemente lo strumento giusto.
 
 
 XML, Json, Yaml sono solo formati... non costringono a gestire il file
 in un modo particolare
 
 https://pypi.python.org/pypi/ijson/
 


O no... letto ora questa email... e giusto ieri mattina mi ero scritto
https://github.com/toobaz/redis-dump-load/blob/incremental_loading/incremental_json.py
dopo avere letto inutilmente
http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json
...

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Dario Bertini
FWIW, era il primo risultato su google, cercando

event parsing json python
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Roberto Preziusi
Il giorno 22 novembre 2013 20:55, Daniele Varrazzo p...@develer.com ha
scritto:


 Domanda mia: ve lo siete inventati voi quel formato?

 Perchè state reinventando l'acqua calda: non dovreste scrivere un nuovo
 parser se potete usare un linguaggio diverso. Quale? Ce ne sono a
 tonnellate pronti per essere usati in Python:


No, non ce lo siamo inventati noi.
E' la conf di un device di rete (Juniper) che purtroppo bisogna parsare per
salvare questa conf su db..

Noto che è possibile avere output così o XML e quindi vi chiedevo quale
fosse il metodo piu' simpatico e veloce per parsare l'output senza troppe
complicazioni.

Adesso cerco una regexp buona per ora ho trovato solo questo modo qui con
sed:

sed -n '/address-set ABC_DEF/,/}' myfilename.conf

che non so come implementare con python.
idee?
Poi provero' a vedere anche come farlo via xml usando qualche libreria in
python
e quando avro' imparato in entrambi i modi..  deciderò :)

Grazie a tutti!
-- 
Preziusi Roberto
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Simone Federici
usa XML in questo caso, lascia perdere le iregular exception
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Roberto Preziusi
Il giorno 25 novembre 2013 16:34, Roberto Preziusi 
roberto.prezi...@gmail.com ha scritto:

 sed -n '/address-set ABC_DEF/,/}' myfilename.conf


avevo perso un pezzo, il cmd è :

sed -n '/address-set ABC_DEF/,/}/p' myfilename.conf


bye
-- 
Preziusi Roberto
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Pietro Battiston
Il giorno lun, 25/11/2013 alle 13.39 +0100, Dario Bertini ha scritto:
 FWIW, era il primo risultato su google, cercando
 
 event parsing json python

La parte event non mi era passata per la testa!

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione enrico franchi
2013/11/25 Roberto Preziusi roberto.prezi...@gmail.com


 No, non ce lo siamo inventati noi.
 E' la conf di un device di rete (Juniper) che purtroppo bisogna parsare
 per salvare questa conf su db..


Strettamente parlando non e' che *devi* parsarlo per metterlo sul DB.
A seconda di quello che vuoi farci, potresti semplicemente sbatterlo nel DB.
E.g., se il tuo scopo e' versionare la configurazione o essere in grado di
replicarla, la faccenda basta.

Devi vedere quanto ti costa fare un parsing vero e proprio (e gestire l'in
e out dal db -- e.g., opzioni nella conf cui non hai pensato quando fatto
lo schema e compagnia).

Ecco diciamo che io, fino a prova contraria lo schiafferei nel db cosi'
come e'.

Leggo pero' che vuoi proprio processarlo. Direi che un parser e' la cosa
corretta.
Non ci vuole molto per scriverlo, il linguaggio *sembra* molto semplice.

Guarda anche se qui non ci fosse un parser bello e pronto da qualche parte:

https://pypi.python.org/pypi/junos-multi-command/

-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-24 Per discussione Giovanni Porcari

Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo p...@develer.com ha 
scritto:

 On 2013-11-23 06:30, Giovanni Porcari wrote:
 Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo
 matteo.bosc...@boscolini.eu ha scritto:
 
 Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
 5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato 
 apprezzabile.
 +1
 
 
 Povero XML, a me sembra tanto comodo e facile da usare.
 Ma sarà perché son vecchio ;)
 
 Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono 
 strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa ho 
 scritto un sistema di importazione ed esportazione di una struttura enorme da 
 postgres (la gestione contabile di un nostro programma, centinaia di mb al 
 mese di partita doppia): per quello xml è stato perfetto. Struttura modellata 
 come si deve:meglio che in Json. Json o Yaml mi avrebbero costretto a 
 caricare tutto in memoria, con sax il caricamento è progressivo. 
 Semplicemente lo strumento giusto.
 
 Ma un file di configurazione: ma che ci vuole sax per parsare un paio di 
 fetenti coppie chiave valore? Ancora a pensare solo per un secondo se un 
 valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, no?
 
 -- Daniele
 


Posso essere d'accordo su tutto.

Infatti il mio commento era più che altro relativo al +1 di Matteo.
Il mio punto di vista è che se comunque usi già XML in altre parti di un 
progetto
e hai già gli strumenti e la consuetudine mentale, impiegare XML anche per
compiti banali non è poi così male.

Se ad esempio all' interno di un file di configurazione trovi :

db
  development implementation=postgres host=localhost port='5432' 
password=mypassword user=myuser/
  external implementation=postgres host=myhost.myorg.my port='5432' 
password=mypassword2 user=myuser2/
  production implementation=oracle host=rich.org.com port='11211' 
password=orac user=oracser/
/db

a me sembra abbastanza compatto e leggibile. 

Poi dipende da come lo leggi. 

Io ad esempio lo leggo così:

config=Bag(myfile)
development_port=config('db.development?port')
 '5432'

ma anche:
configured_db=config['db'].keys()
 ['development','external','production']


Quindi direi che, come sempre, tutto è relativo alle personali
esperienze, preferenze, idiosincrasie e agli strumenti che si usano :)

Ciao

G




___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-24 Per discussione Dario Bertini
2013/11/24 Daniele Varrazzo p...@develer.com:
 Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
 strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa ho
 scritto un sistema di importazione ed esportazione di una struttura enorme
 da postgres (la gestione contabile di un nostro programma, centinaia di mb
 al mese di partita doppia): per quello xml è stato perfetto. Struttura
 modellata come si deve:meglio che in Json. Json o Yaml mi avrebbero
 costretto a caricare tutto in memoria, con sax il caricamento è progressivo.
 Semplicemente lo strumento giusto.


XML, Json, Yaml sono solo formati... non costringono a gestire il file
in un modo particolare

https://pypi.python.org/pypi/ijson/

se questa è la miglior ragione per usare XML, mi sa che continuerò ad
evitarlo (tranne quando costretto) per mlto tempo :)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-24 Per discussione Marco Beri
On 24 Nov 2013 02:33, Daniele Varrazzo p...@develer.com wrote:

 P.s. inviato col cellulare: perdonate il bottom posting e la
cancellazione delle parti non utili del messaggio.

Ahahahaha!!!

Ciao.
Marco.
PS: idem.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-24 Per discussione Marco De Paoli
Il 24/nov/2013 02:33 Daniele Varrazzo p...@develer.com ha scritto:

 On 2013-11-23 06:30, Giovanni Porcari wrote:

 Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo
 matteo.bosc...@boscolini.eu ha scritto:

 Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:

 5. XML se proprio ti diverti ad overingegnerizzare per nessun
risultato apprezzabile.

 +1


 Povero XML, a me sembra tanto comodo e facile da usare.
 Ma sarà perché son vecchio ;)


 Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa
ho scritto un sistema di importazione ed esportazione di una struttura
enorme da postgres (la gestione contabile di un nostro programma, centinaia
di mb al mese di partita doppia): per quello xml è stato perfetto.
Struttura modellata come si deve:meglio che in Json. Json o Yaml mi
avrebbero costretto a caricare tutto in memoria, con sax il caricamento è
progressivo. Semplicemente lo strumento giusto.

 Ma un file di configurazione: ma che ci vuole sax per parsare un paio di
fetenti coppie chiave valore? Ancora a pensare solo per un secondo se un
valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, no?

In realtà c'è un altro caso d'uso ed è quello dei dati documentali.

Ossia xlm come markup-language semantico per un documento.

Mi pare anzi che questo obiettivo sia il primo per cui xml è nato.

Prima dell' xml c'era sgml da cui l'xml ha preso un sacco di concetti (es.
quello di dtd). Xml rispetto ad sgml ha introdotto una cosa fondamentale:
unicode. Cosa che ne ha decretato la rapida adozione nei sistemi
documentali in tutti i casi in cui si voleva un contenuto fortemente
slegato dalla formattazione. Da cui il concetto di xslt e la pubblicazione
in vari formati grazie ad un foglio di stile xsl.

È ancora pesantemente usato come formato di interscabio per traduttori
umani e sistemi automatici (es. Translation Memory) nelle forme xliff e tmx.

Usare invece xml come formato di scambio dati (anche non documentali) tra
applicativi è stata un idea successiva legata a soap e xml-rpc.

Mi fermo qui perché sto andando ot. Infatti la domanda iniziale non si
riferisce agli ambiti che ho descritto. Era giusto per condividere i miei
due cents sulle ragioni d'essere dell'xml.

Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-24 Per discussione Manlio Perillo

On 24/11/2013 02:33, Daniele Varrazzo wrote:

[...]
Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
strumenti utili per certi compiti ed altri utili per altri. Pochi mesi
fa ho scritto un sistema di importazione ed esportazione di una
struttura enorme da postgres (la gestione contabile di un nostro
programma, centinaia di mb al mese di partita doppia): per quello xml è
stato perfetto. Struttura modellata come si deve:meglio che in Json.
Json o Yaml mi avrebbero costretto a caricare tutto in memoria, con sax
il caricamento è progressivo. Semplicemente lo strumento giusto.



No, aspetta.
Qui non è colpa del formato.
E' colpa delle implementazioni del cavolo, che non permettono di fare 
operazioni efficienti.
Non mi sembra ci sia nulla, in JSON o YAML, che impedisca di 
implementare un parser/generatore incrementali.


La prima cosa che mi ha restituito google:
http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json


 [...]

Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-23 Per discussione Daniele Varrazzo

On 2013-11-23 06:30, Giovanni Porcari wrote:

Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo
matteo.bosc...@boscolini.eu ha scritto:


Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
5. XML se proprio ti diverti ad overingegnerizzare per nessun 
risultato apprezzabile.

+1



Povero XML, a me sembra tanto comodo e facile da usare.
Ma sarà perché son vecchio ;)


Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono 
strumenti utili per certi compiti ed altri utili per altri. Pochi mesi 
fa ho scritto un sistema di importazione ed esportazione di una 
struttura enorme da postgres (la gestione contabile di un nostro 
programma, centinaia di mb al mese di partita doppia): per quello xml è 
stato perfetto. Struttura modellata come si deve:meglio che in Json. 
Json o Yaml mi avrebbero costretto a caricare tutto in memoria, con sax 
il caricamento è progressivo. Semplicemente lo strumento giusto.


Ma un file di configurazione: ma che ci vuole sax per parsare un paio 
di fetenti coppie chiave valore? Ancora a pensare solo per un secondo se 
un valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, 
no?


-- Daniele

P.s. inviato col cellulare: perdonate il bottom posting e la 
cancellazione delle parti non utili del messaggio.




___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] parsing config file

2013-11-22 Per discussione Roberto Preziusi
Ciao,
avrei bisogno di effettuare il parsing di un file così composto:

...
   address-set ABC_DEF {
address ABC_PRO_1;
address BCD_PRO_IP2;
address AAA_ABC;
address FFF_CHCD;

   }
...

All'interno dello stesso file ho altri campi address-set con altri nomi
diversi da ABD_DEF

Vorrei creare una lista con dentro tutti gli address del mio address-set
address-list = [ABC_PRO_1, BCD_PRO_IP2, ... ]

Qualcuno sa dirmi se ci sono librerie in python che fanno questo o se c'è
un modo veloce x farlo ?

Altra domanda:
sarebbe piu' facile effettuare la stessa operazione se avessi la possibiltà
di esportare questa conf in xml ?

saluti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-22 Per discussione Marco De Paoli
Il giorno 22 novembre 2013 18:18, Roberto Preziusi 
roberto.prezi...@gmail.com ha scritto:

 Ciao,
 avrei bisogno di effettuare il parsing di un file così composto:

 ...
address-set ABC_DEF {
 address ABC_PRO_1;
 address BCD_PRO_IP2;
 address AAA_ABC;
 address FFF_CHCD;
 
}
 ...

 All'interno dello stesso file ho altri campi address-set con altri nomi
 diversi da ABD_DEF

 Vorrei creare una lista con dentro tutti gli address del mio address-set
 address-list = [ABC_PRO_1, BCD_PRO_IP2, ... ]

 Qualcuno sa dirmi se ci sono librerie in python che fanno questo o se c'è
 un modo veloce x farlo ?

 Altra domanda:
 sarebbe piu' facile effettuare la stessa operazione se avessi la
 possibiltà di esportare questa conf in xml ?


beh, decisamente. Se esporti in xml puoi andare di lxml con gli xpath,
iteri sugli elementi che ti interessano e prendi i valori. Punto.

Altrimenti con la struttura che hai accennato, mi sa che il modo più
semplice è usare regular-expression riga per riga però ti devi mantenere un
minimo di stato (es. sono dentro una struttura address-set, etc.)

ciao,
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-22 Per discussione Daniele Varrazzo

On 2013-11-22 17:18, Roberto Preziusi wrote:

Ciao,
avrei bisogno di effettuare il parsing di un file così composto:

...
   address-set ABC_DEF {
address ABC_PRO_1;
address BCD_PRO_IP2;
address AAA_ABC;
address FFF_CHCD;

   }
...


Sembra abbastanza facile da fare con le espressioni regolari. La 
soluzione corretta è scrivere un parser con un generatore che parta 
dalla vostra grammatica (ply, pyparsing).



All'interno dello stesso file ho altri campi address-set con altri 
nomi

diversi da ABD_DEF

Vorrei creare una lista con dentro tutti gli address del mio 
address-set

address-list = [ABC_PRO_1, BCD_PRO_IP2, ... ]

Qualcuno sa dirmi se ci sono librerie in python che fanno questo o se 
c'è

un modo veloce x farlo ?

Altra domanda:



Domanda mia: ve lo siete inventati voi quel formato?

Perchè state reinventando l'acqua calda: non dovreste scrivere un nuovo 
parser se potete usare un linguaggio diverso. Quale? Ce ne sono a 
tonnellate pronti per essere usati in Python:


1. python stesso. Se il formato è Python basta importarlo per avere 
tutti gli oggetti, ed avete anche già pronti modularità (usando import), 
potete usare espressioni, variabili...


address_set(ABC_DEF,
address(ABC_PRO_1),
address(BCD_PRO_IP2),
...)

2. un file ini sembra più che sufficiente, non so se si possono fare 
ripetizioni. Il parser è nella stdlib.


[ABC_DEF]
address: ABC_PRO_1
address: BCD_PRO_IP2

3. YAML è facilissimo da editare a mano

4. JSON pure andrebbe più che bene, meno editabile di YAML ma il parser 
è nella stdlib.


sarebbe piu' facile effettuare la stessa operazione se avessi la 
possibiltà

di esportare questa conf in xml ?


5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato 
apprezzabile.



-- Daniele
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-22 Per discussione Matteo Boscolo

Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
5. XML se proprio ti diverti ad overingegnerizzare per nessun 
risultato apprezzabile.

+1
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-22 Per discussione Giovanni Porcari

Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo 
matteo.bosc...@boscolini.eu ha scritto:

 Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
 5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato 
 apprezzabile.
 +1
 

Povero XML, a me sembra tanto comodo e facile da usare.
Ma sarà perché son vecchio ;)

G
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-11 Per discussione Nicola Larosa
 Gollum1 ha scritto:
 Ciao []

Marco De Paoli wrote:
 lol

This list is not empty!

-- 
Nicola Larosa - http://www.tekNico.net/

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-11 Per discussione Marco De Paoli
Il giorno 10 settembre 2013 17:26, Gollum1 gollum1.smeag...@gmail.com ha
scritto:

 Ciao []


lol


 se faccio hendle_data(data), mi vedo passare i dati contenuti in TUTTI
 i tag della pagina, non solo quelli di cui ho bisogno... come posso
 fare a discriminare quelli su cui devo lavorare?


secondo me fare il parsing via sax è un po' complicato
hai valutato di individuare gli elementi via xpath esempio con lxml

Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-11 Per discussione Marco De Paoli
Il giorno 11 settembre 2013 18:09, Marco De Paoli depao...@gmail.com ha
scritto:




 Il giorno 11 settembre 2013 18:05, Nicola Larosa n...@teknico.net ha
 scritto:

  Marco De Paoli wrote:
  Ciao [x for in world if x is super-programmer]

 Marco De Paoli wrote:
  il trattino è ovviamente una licenza sintattica!

 Non ci arriva nemmeno lì, c'è un altro errore di sintassi prima. ;-)


 diciamo che le licenze sintattiche abbondano, e anche i sottointesi
 ... siamo a livello di parser intuitivo!


linguaggi regolari, liberi dal contesto, dipendenti dal contesto, ... via
via fino ai linguaggi oracolari!
non escludo che python ci arrivi

la pep la scrivi tu?
titolo: Python mentalism

ok, scusate l'OT, ciao lista!
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-11 Per discussione Nicola Larosa
 Marco De Paoli wrote:
 Ciao [x for in world if x is super-programmer]

Marco De Paoli wrote:
 il trattino è ovviamente una licenza sintattica!

Non ci arriva nemmeno lì, c'è un altro errore di sintassi prima. ;-)

-- 
Nicola Larosa - http://www.tekNico.net/

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-11 Per discussione Marco De Paoli
Il giorno 11 settembre 2013 18:05, Nicola Larosa n...@teknico.net ha
scritto:

  Marco De Paoli wrote:
  Ciao [x for in world if x is super-programmer]

 Marco De Paoli wrote:
  il trattino è ovviamente una licenza sintattica!

 Non ci arriva nemmeno lì, c'è un altro errore di sintassi prima. ;-)


diciamo che le licenze sintattiche abbondano, e anche i sottointesi
... siamo a livello di parser intuitivo!
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-11 Per discussione Marco De Paoli
2013/9/11 Nicola Larosa n...@teknico.net

  Gollum1 ha scritto:
  Ciao []

 Marco De Paoli wrote:
  lol

 This list is not empty!


good point!

era meglio
 Ciao [x for in world if x is super-programmer]


... così, tanto per allargarci al mondo e aggiungere un tocco di sana umiltà
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-11 Per discussione Nicola Larosa
Marco De Paoli wrote:
 linguaggi regolari, liberi dal contesto, dipendenti dal contesto,...
 via via fino ai linguaggi oracolari!
 non escludo che python ci arrivi
 
 la pep la scrivi tu? titolo: Python mentalism

Scrivere è obsoleto. L'ho già trasmessa telepaticamente a tutti gli
interessati.

-- 
Nicola Larosa - http://www.tekNico.net/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] parsing pagina web

2013-09-10 Per discussione Gollum1
Ciao []

ritornando finelmante al mio malsano progetto, sto cercando di fare
il parser della pagina web che ho scaricato.

usando python3, uso html.parser come modulo per fare il parsing.

from html.parser import HTMLParser

class TimeTableHTMLParser(HTMLParser):

def __init__(self):
HTMLParser.__init__(self)

def handle_starttag(self, tag, attrs):
if tag == tr:
for x,y in attrs:
if x.lower()==class and y.lower()==testo2:
print(Ho individuato il campo del giorno)

oa il mio problema è come faccio a prelevare il contenuto di questo tag?

dentro ho una sequenza di tag td, i primi tag hanno dei contenuti
che devo prelevare,
i successivi tag td contengono un tag input che negli attributi
contiene altri valori che mi servono.

come faccio a legarli uno con l'altro? come posso vedere al suo interno?

se faccio hendle_data(data), mi vedo passare i dati contenuti in TUTTI
i tag della pagina, non solo quelli di cui ho bisogno... come posso
fare a discriminare quelli su cui devo lavorare?

Tnx

Byez
-- 
Gollum1
Tesoro, dov'é il mio teoro...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-10 Per discussione Gollum1
Voglio provare a spiegarmi meglio:

La pagina è costruita con una serie di tabelle, a me interessano le righe
della seconda tabella. Ogni riga utile (tag: TR) è identificata con  la
classe testo2.
Ogni riga rappresenta un giorno. Ogni tabella rappresenta un mese.
Il record del giorno è praticamente diviso in record (tag TD) alcuni campi
sono composti dai dati che mi servono come contenuto dei tag, altri campi
(le timbrature) sono contenuti come attributo di un tag incluso (tag input).

Di tutto il resto non mi importa nulla, il parser invece mi scandisce
comunque tutta la pagina, e non riesco a costruire qualcosa di utile per la
lettura di ogni singolo record e la sua suddivisione in campi.

Grazie.
-- 
Gollum1
teoro, dov'è il mio teoro...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing pagina web

2013-09-10 Per discussione Valerio Maggio
2013/9/10 Gollum1 gollum1.smeag...@gmail.com


 ora il mio problema è come faccio a prelevare il contenuto di questo tag?

 dentro ho una sequenza di tag td, i primi tag hanno dei contenuti
 che devo prelevare,
 i successivi tag td contengono un tag input che negli attributi
 contiene altri valori che mi servono.

 come faccio a legarli uno con l'altro? come posso vedere al suo interno?


Il punto è che fare /web scraping/ come serve a te diventa complicato con
un parser ad eventi SAX-like [1], come sembra essere HTMLParser.

Al contrario, è semplicissimo farlo con un parser DOM-based.

Dà una occhiata a BeautifulSoup [
http://www.crummy.com/software/BeautifulSoup/bs4/doc/], dovresti risolvere
!-)

--
[1]: http://en.wikipedia.org/wiki/Simple_API_for_XML
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing della pagina HTML

2013-07-16 Per discussione Valerio Maggio
On Jul 16, 2013, at 12:09 PM, Nicola Larosa n...@teknico.net wrote:

 Qui c'è la doc di text_content:
 
 http://lxml.de/lxmlhtml.html#html-element-methods
 
 Nello stesso posto trovi le doc di:
 
 - find_class (se conosci la classe CSS degli elementi che ti
  interessano);
 - get_element_by_id (se conosci l'id dell'elemento che ti interessa):
 - cssselect (per usare selettori CSS, molto potenti);
 - un accenno a xpath, documentata altrove
  http://lxml.de/xpathxslt.html#xpath, anche molto potente.
 
 L'esempio usa find_class http://lxml.de/lxmlhtml.html#examples.


In alternativa, per queste attività di web scraping io ho sempre utilizzato
BeautifulSoup (http://www.crummy.com/software/BeautifulSoup/)

Btw:
[…]
Beautiful Soup sits on top of popular Python parsers like lxml and html5lib, 
allowing you to try out different parsing strategies or trade speed for 
flexibility.
[…]

--
Valerio



___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Parsing e aggiunta a file txt

2012-09-28 Per discussione Matteo Perini

Ciao a tutti,
ho un file txt con questa struttura:

[main]
eta=[-,16,23,26]
[-]
P1=-
[16]
P1='andrea'
[23]
P1='gianni'
[26]
P1='paolo'
P2='roberto'

poi, con il seguente codice vado a leggerlo sezione per sezione.

config = ConfigParser.RawConfigParser()
config.read(filename)
self.eta=list(config.get('main', 'eta').lstrip('[').rstrip(']').split(','))
self.boys=[]
for d in self.eta:
num=1
self.boy=[]
while config.has_option('%s' % d, 'P%d' % num):
self.boy.append(config.get('%s' % d, 'P%d' % num))
num += 1
self.boys.append(self.boy)

dove self.eta e self.boys vanno a popolare due combo con le quali riesco 
a selezionare i ragazzi scremando in base all'età.


Volevo aggiungere la possibilità di aggiungere un ragazzo ad una sezione 
del file ma sto trovando parecchia difficoltà.
Qualcuno conosce un modo per aggiungere voci alle sezioni in un file con 
la struttura sopra?

Ho fatto qualche prova con ConfigParser ma non ho ottenuto risultati.
La difficoltà sta che devo aggiungerlo al file, non mi basta aggiungerlo 
alla combo (lo stesso file verrà riutilizzato).

Grazie mille.
Ciao
Matteo

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing e aggiunta a file txt

2012-09-28 Per discussione Marco Beri
2012/9/28 Matteo Perini perini.mat...@gmail.com

 Volevo aggiungere la possibilità di aggiungere un ragazzo ad una sezione
 del file ma sto trovando parecchia difficoltà.
 Qualcuno conosce un modo per aggiungere voci alle sezioni in un file con
 la struttura sopra?
 Ho fatto qualche prova con ConfigParser ma non ho ottenuto risultati.
 La difficoltà sta che devo aggiungerlo al file, non mi basta aggiungerlo
 alla combo (lo stesso file verrà riutilizzato).


In sequenza:

http://docs.python.org/library/configparser.html#ConfigParser.RawConfigParser.set

http://docs.python.org/library/configparser.html#ConfigParser.RawConfigParser.write

Ciao.
Marco.

-- 
http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing e aggiunta a file txt

2012-09-28 Per discussione Matteo Perini




In sequenza:

http://docs.python.org/library/configparser.html#ConfigParser.RawConfigParser.set

http://docs.python.org/library/configparser.html#ConfigParser.RawConfigParser.write

Ciao.
Marco.



Grazie.
Avevo visto la documentazione
Chiedo scusa per la domanda banale ma mi stavo incartando sulla parte di 
salvataggio (che adesso ho trovato negli esempi.

'''

with  open('example.cfg',  'wb')  as  configfile:
config.write(configfile)
'''

Ciao e Grazie
Matteo


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-11 Per discussione enrico franchi
2012/7/10 Pietro peter.z...@gmail.com:

 no non è contro natura, per generare codice (c, python, etc.) ti
 consiglio di utilizzare il potente Jinja:
 http://jinja.pocoo.org/

Ed esattamente a cosa servirebbe un template engine per scrivere un parser? ;)

-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-11 Per discussione Pietro
2012/7/11 enrico franchi enrico.fran...@gmail.com:
 2012/7/10 Pietro peter.z...@gmail.com:
 Provero' con pyparsing e anltr (ma generare codice python e' contro natura).

 no non è contro natura, per generare codice (c, python, etc.) ti
 consiglio di utilizzare il potente Jinja:
 http://jinja.pocoo.org/

 Ed esattamente a cosa servirebbe un template engine per scrivere un parser? ;)

Non lo so era lui che volava generare del codice... o almeno io avevo
interpretato la frase in quel modo, anche se erroneamente.

:-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-11 Per discussione enrico franchi
2012/7/11 Pietro peter.z...@gmail.com:

 Non lo so era lui che volava generare del codice... o almeno io avevo
 interpretato la frase in quel modo, anche se erroneamente.

Ah, no... lui non voleva un parser generator che generava il codice... ;)

-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-10 Per discussione enrico franchi
2012/7/9 Marco Mariani bir...@gmail.com


 dovendo fare parsing di un testo strutturato, al fine di migrare un po' di
 dati,
 quale libreria python consigliate nel 2012?


Tempo fa avevo abusato di questa:
http://www.dabeaz.com/ply/

Oggi IMHO c'e' di meglio... questa e' da tempo che vorrei trovare una scusa
di usarla:
http://pyparsing.wikispaces.com/

Alternativamente c'e' Antlr. E' javish, ma genera parser anche per Python.
Il principale vantaggio e' che hanno un ottimo editor per scrivere e
testare grammatiche live che potrebbe valere la pena.

Ho saltato l'esame di compilatori, peste mi colga.
 Accetto volentieri indicazioni su testi per colmare parzialmente tale
 lacuna, se per Kindle e non esosi, ancora meglio.


Disclaimer nei link c'e' in mezzo il mio amazon associates ID .

Il classico e' il dragon book.
http://www.amazon.com/gp/product/0321486811/ref=as_li_ss_tl?ie=UTF8tag=rik-20linkCode=as2camp=1789creative=390957creativeASIN=0321486811

A me piace molto pure il Torczon  Cooper (insipiegabilmente mal votato).
http://www.amazon.com/gp/product/012088478X/ref=as_li_ss_tl?ie=UTF8tag=rik-20linkCode=as2camp=1789creative=390957creativeASIN=012088478X

Sinceramente TC non fa per te: fanno relativamente poco sul front-end per
concentrarsi sulle tecniche di ottimizzazione e analisi che, ovviamente,
non riguardano il problema. Pero' anche il dragon book potrebbe essere
pesantello da leggersi per una cosa del genere...

Forse meglio leggiucchiarsi uno di questi :

http://www.amazon.com/gp/product/0978739256/ref=as_li_ss_tl?ie=UTF8tag=rik-20linkCode=as2camp=1789creative=390957creativeASIN=0978739256

http://www.amazon.com/gp/product/193435645X/ref=as_li_ss_tl?ie=UTF8tag=rik-20linkCode=as2camp=1789creative=390957creativeASIN=193435645X


-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-10 Per discussione Marco Mariani
2012/7/10 enrico franchi enrico.fran...@gmail.com


 Alternativamente c'e' Antlr. E' javish, ma genera parser anche per Python.
 Il principale vantaggio e' che hanno un ottimo editor per scrivere e
 testare grammatiche live che potrebbe valere la pena.


Provero' con pyparsing e anltr (ma generare codice python e' contro natura).



 Forse meglio leggiucchiarsi uno di questi :


 http://www.amazon.com/gp/product/0978739256/ref=as_li_ss_tl?ie=UTF8tag=rik-20linkCode=as2camp=1789creative=390957creativeASIN=0978739256


 http://www.amazon.com/gp/product/193435645X/ref=as_li_ss_tl?ie=UTF8tag=rik-20linkCode=as2camp=1789creative=390957creativeASIN=193435645X


Ottimi suggerimenti, grazie.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-10 Per discussione Pietro
Ciao Marco,

2012/7/10 Marco Mariani bir...@gmail.com:
 Provero' con pyparsing e anltr (ma generare codice python e' contro natura).

no non è contro natura, per generare codice (c, python, etc.) ti
consiglio di utilizzare il potente Jinja:
http://jinja.pocoo.org/

buona giornata!

Pietro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-10 Per discussione Marco Mariani
2012/7/10 Pietro peter.z...@gmail.com

 Provero' con pyparsing e anltr (ma generare codice python e' contro
 natura).

 no non è contro natura, per generare codice (c, python, etc.) ti
 consiglio di utilizzare il potente Jinja:
 http://jinja.pocoo.org/


Ma io non voglio generare codice, e' uno dei motivi per cui uso un
linguaggio dinamico.
Se e' necessario per il parser, male minore, lo faro' :-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] parsing

2012-07-09 Per discussione Marco Mariani
Carissimi,

dovendo fare parsing di un testo strutturato, al fine di migrare un po' di
dati,
quale libreria python consigliate nel 2012?

Il mio approccio e' sempre stato del tipo whatever works, ovvero codifica
dello stato in classi o funzioni fatte alla buona.
Di migrazioni ne ho fatte un certo numero, anche complesse, ma l'ultima
volta che ho scritto un parser top-down e' stato all'universita', mille
anni fa.

Ho saltato l'esame di compilatori, peste mi colga.
Accetto volentieri indicazioni su testi per colmare parzialmente tale
lacuna, se per Kindle e non esosi, ancora meglio.

tnx
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-09 Per discussione Massimo Capanni
intendi qualcosa del genere?

http://nltk.org



Il giorno 09 luglio 2012 20:10, Marco Mariani bir...@gmail.com ha scritto:

 Carissimi,

 dovendo fare parsing di un testo strutturato, al fine di migrare un po' di
 dati,
 quale libreria python consigliate nel 2012?

 Il mio approccio e' sempre stato del tipo whatever works, ovvero
 codifica dello stato in classi o funzioni fatte alla buona.
 Di migrazioni ne ho fatte un certo numero, anche complesse, ma l'ultima
 volta che ho scritto un parser top-down e' stato all'universita', mille
 anni fa.

 Ho saltato l'esame di compilatori, peste mi colga.
 Accetto volentieri indicazioni su testi per colmare parzialmente tale
 lacuna, se per Kindle e non esosi, ancora meglio.

 tnx
 Marco

 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing

2012-07-09 Per discussione Marco Mariani
2012/7/9 Massimo Capanni massimo.capa...@gmail.com

intendi qualcosa del genere?

 http://nltk.org


Non devo analizzare i testi che importo dal punto di vista del linguaggio,
solamente la struttura dei dati.
Quello eventualmente potrebbe essere un livello successivo.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing html

2009-12-08 Per discussione Lorenzo Macchiavelli
Ok proverò con questo grazie!!


Inviato da iPhone

Il giorno 07/dic/2009, alle ore 17.14, Marco Dalla Stella 
m.dallaste...@gmail.com 
  ha scritto:

 Il 07 dicembre 2009 15.05, Lorenzo Macchiavelli
 lmacchiave...@gmail.com ha scritto:
 Salve a tutti!...

 Salve,

 Quale approccio posso usare in python, esistono dei
 moduli per fare il parsing di file html.. che magari fanno già
 in automatico un processo simile di definizione dei padri e figli??

 Io utilizzerei lxml, è parecchio veloce e parsa ottimamente l'html.

 http://codespeak.net/lxml/

 Saluti,
 -- 
 Marco Dalla Stella
 web: http://thediracsea.org
 twitter: http://twitter.com/kra1iz3c
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Parsing html

2009-12-07 Per discussione Lorenzo Macchiavelli
Salve a tutti!...
Sto cercando di realizzare uno strumento per analizzare i padri e i figli
degli
elementi di un file Html, Es:

div id = wrap
  div id=item1/div
  div id=item2
div id=altroItem/div
  /div
/div

wrap è padre di (item1, item2, altroItem)
item2 è padre di (altroitem)

e memorizzare queste informazioni in una lista in modo
da poterle riutilizzare...

Quale approccio posso usare in python, esistono dei
moduli per fare il parsing di file html.. che magari fanno già
in automatico un processo simile di definizione dei padri e figli??
Grazie anticipatamente!!...
Lorenzo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing html

2009-12-07 Per discussione ugaciaka
 Quale approccio posso usare in python, esistono dei
 moduli per fare il parsing di file html.. che magari fanno già
 in automatico un processo simile di definizione dei padri e figli??

credo che BeautifulSoup faccia al caso tuo (ma ce ne sono tanti altri,
questo però mi pare più completo)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing html

2009-12-07 Per discussione Massimiliano Pippi
2009/12/7 Lorenzo Macchiavelli lmacchiave...@gmail.com:
 Salve a tutti!...
 Sto cercando di realizzare uno strumento per analizzare i padri e i figli
 degli
 elementi di un file Html, Es:
Dai un'occhiata anche qui (anche se non l'ho mai provata):
http://code.google.com/p/html5lib/



-- 
M.

http://masci.wordpress.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing html

2009-12-07 Per discussione Lorenzo Macchiavelli
Ok Grazie Mille!!!.. Ho dato un'occhiata a qualche esempio...
Penso sia lo strumento che cercavo..
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing html

2009-12-07 Per discussione Marco Dalla Stella
Il 07 dicembre 2009 15.05, Lorenzo Macchiavelli
lmacchiave...@gmail.com ha scritto:
 Salve a tutti!...

Salve,

 Quale approccio posso usare in python, esistono dei
 moduli per fare il parsing di file html.. che magari fanno già
 in automatico un processo simile di definizione dei padri e figli??

Io utilizzerei lxml, è parecchio veloce e parsa ottimamente l'html.

http://codespeak.net/lxml/

Saluti,
-- 
Marco Dalla Stella
web: http://thediracsea.org
twitter: http://twitter.com/kra1iz3c
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing output dei comandi

2008-05-05 Per discussione Mattia
On Sun, 4 May 2008 16:15:32 +0200
enrico franchi [EMAIL PROTECTED] wrote:

 2008/5/1 Mattia [EMAIL PROTECTED]:
 
   Vorrei provare questa strada. Se hai dei link da passare che hai
   trovato particolarmente interessanti...
 
 Io userei PLY. Ma mi sa che sono biased, eh.

Stavo guardando simpleparser, ma comunque la materia è abbastanza
complessa.
Per adesso la metto nella TODO list.

Grazie a tutti.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Parsing output dei comandi

2008-05-01 Per discussione Mattia
Ciao a tutti,

vorrei catturare l'output di un comando del tipo:
our %lsdvd = (
  device = '/dev/dvd',
  title = 'CLOCKWORK_ORANGE_D4_4X3_MATTED',
  vmg_id = 'DVDVIDEO-VMG',
  provider_id = 'WARNER HOME VIDEO',
  track = [
{
  ix = 1,
  length = 7868.060,
  vts_id = 'DVDVIDEO-VTS',
  vts = 1,
  ttn = 1,
  fps = 25.00,
  format = 'PAL',
  aspect = '4/3',
  width = 720,
  height = 576,
  df = '?',
},
{
  ix = 2,
  length = 12.020,
  vts_id = 'DVDVIDEO-VTS',
  vts = 1,
  ttn = 2,
  fps = 25.00,
  format = 'PAL',
  aspect = '4/3',
  width = 720,
  height = 576,
  df = '?',
},
{
  ix = 3,
  length = 60.000,
  vts_id = 'DVDVIDEO-VTS',
  vts = 1,
  ttn = 3,
  fps = 25.00,
  format = 'PAL',
  aspect = '4/3',
  width = 720,
  height = 576,
  df = '?',
},
  ],
  longest_track = 1,
);

Mi piacerebbe poter avere i dati strutturati nello stesso modo, cioè
avere una stringa device = '/dev/dvd', una lista di dizionari track,
ecc..

Sto provando con split ma con risultati scadenti.
Ci sono degli strumenti adatti allo scopo?

Grazie,
Mattia.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing output dei comandi

2008-05-01 Per discussione Daniele Varrazzo
On Thu, 1 May 2008 16:08:18 +0200, Mattia [EMAIL PROTECTED] wrote:
 Ciao a tutti,
 
 vorrei catturare l'output di un comando del tipo:

...

 Sto provando con split ma con risultati scadenti.
 Ci sono degli strumenti adatti allo scopo?

Questo e' un super-hack, ma:

s = our %lsdvd = ( device = '/dev/dvd', [...] );

import re

lsdvd = eval(re.sub(r(\w+)\s+\=\, r'\1':, s)
.split(=, 1)[1]
.replace(;, ).replace((, {).replace(), }))

fa esattamente quello che chiedi.

La regexp converte la tua sintassi in quella di un dizionario Python. Lo
split e i replace eliminano la fuffa di contorno.

Per un uilizzo piu' serio (per esempio piu' sicuro, se la fonte dei dati
non fosse fidata) occorre scrivere un parser vero.

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing output dei comandi

2008-05-01 Per discussione Mattia
On Thu, 01 May 2008 16:32:55 +0200
Daniele Varrazzo [EMAIL PROTECTED] wrote:

 Questo e' un super-hack, ma:
[snip]
 fa esattamente quello che chiedi.

Grazie per la risposta ma pensavo ci fosse qualcosa di più semplice.
Ho visto che il comando (lsdvd, se interessa) converte l'output in xml.
Quindi stavo leggendo se minidom sia il modo più semplice per leggere i
dati.

Mi sembra strano però che sia più facile fare il parsing di un xml
piuttosto che di un testo fatto apposta per python.

Saluti,
Mattia.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing output dei comandi

2008-05-01 Per discussione Andrea Gasparini
  Mi sembra strano però che sia più facile fare il parsing di un xml
  piuttosto che di un testo fatto apposta per python.
 Il testo che hai mostrato non mi sembra fatto apposta per python: sembra
 piu' ruby.

Confermo: e' (ahime') ben conosciuta sintassi Perl. 

La cosa piu' comoda sarebbe usare uno scriptino perl che prende quel testo, 
lo valuta, e ti sputa fuori un yaml, xml, o qualcos'altro. Che poi parsi 
come vuoi con python.

bye!
-- 
-gaspa-
---
- http://launchpad.net/~gaspa -
-- HomePage: iogaspa.altervista.org ---
-Il lunedi'dell'arrampicatore: www.lunedi.org -
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parsing output dei comandi

2008-05-01 Per discussione Mattia
On Thu, 1 May 2008 21:27:35 +0200
Andrea Gasparini [EMAIL PROTECTED] wrote:

 Confermo: e' (ahime') ben conosciuta sintassi Perl. 

In effetti l'output per Perl è pressoché identico a Python se non per
dei :.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python