Re: [Python] python xml
Ciao, nibbio padano wrote: > salve, ho fatto qualche script in python nulla di complesso cose molto > semplici per un > comune. ora dovrei trasformare dei dati archiviati su un foglio di > excel in dati xml con delle > specifiche ben precise rilasciate dal ministero del tesoro su un file > xds. per excel so che c'è > la libreria cvs l'ho già usata e va bene, per l'xml esiste qualcosa > che utilizzi il file xds per > creare poi il file xml come specificato?. Tra le tante, per XML ti consiglio di dare un'occhiata a lxml Lorenzo. > grazie in anticipo > Gilberto > > > > ___ > 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] python, crontab e caratteri non ascii
Ciao ragazzi/e, ho fatto un script python che esegue il comando sensors; estrare i valori di temperature dal suo output; li scrive in un file di log assieme alla data (ad ogni esecuzione scrive una riga nel file di log). Beh...cosa centra con crontab? Se eseguo lo script lanciandolo da riga di comando, scrive correttamente i valori nel file di log, se lo eseguo da crontab, stampa solo la data. Questa è la funzone chiamata in causa: def get_temperature(sensors): '''Restituisce una lista con i valori decimali delle temperature''' T = [] for line in sensors.splitlines(): if '°C' in line: T.append ( float(line.split('+')[1].split('°')[0]) ) return T La lista T è vuota se lanciata da crontab. Il primo 'if '°C' in line:' non trova la corrispondenza per via del carattere del grado '°'. Avete idea del motivo e come risolvere? (Il workaround l'ho già trovato: cerco ' = ' al posto di '°C' e faccio lo split su '.' al posto di '°'). Lavoro su debian lenny 64bit e python 2.5. Lo script inizia con #!/usr/bin/python # -*- coding: utf-8-*- Esempio del testo di cui faccio il parse coretemp-isa-0007 Adapter: ISA adapter Core 7: +33.0°C (high = +84.0°C, crit = +100.0°C) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] python, crontab e caratteri non ascii
On Wed, May 25, 2011 at 10:59:29AM +0200, Valerio Pachera wrote: > Ciao ragazzi/e, > > ho fatto un script python che esegue il comando sensors; > estrare i valori di temperature dal suo output; > li scrive in un file di log assieme alla data (ad ogni esecuzione > scrive una riga nel file di log). > > Beh...cosa centra con crontab? > Se eseguo lo script lanciandolo da riga di comando, scrive > correttamente i valori nel file di log, > se lo eseguo da crontab, stampa solo la data. Non hai postato il codice di come apri il file che "parsi", io mi concentrerei li. Quel file è codificato utf-8? Onestamente però non so come mai si comporta differentemente. L'environment da riga di comando e da cron è differente, non so dire se esiste una dipendenza da qualche variabile d'ambiente in come viene aperto il file però... sandro *:-) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] python, crontab e caratteri non ascii
On Wed, 25 May 2011 10:59:29 +0200, Valerio Pachera wrote: > Esempio del testo di cui faccio il parse > > coretemp-isa-0007 > Adapter: ISA adapter > Core 7: +33.0°C (high = +84.0°C, crit = +100.0°C) Probabilmente dipende dal diverso env in cui viene eseguito sensors. Se non è su console UTF-8 sembra non emetta il "°". piro@bagheera:~$ echo $LANG en_GB.UTF-8 piro@bagheera:~$ sensors | tail -2 temp8:+0.0°C piro@bagheera:~$ LANG=C sensors | tail -2 temp8:+0.0 C -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Espressioni regolari
Ho delle stringe, dove i caratteri che non sono le lettere maiuscole e minuscole e i numeri, vengono sostituiti da "__codice.ascii__" ovvero: doppio underscore + codice ascii + doppio underscore. Per decodificarli pensavo di usare le espressioni regolari. Qualcosa del tipo p=re.compile('__\d\d__|__\d\d\d__') il problema è che quando voglio eseguire la "sub", non so come fare a passargli il numero (cod_ascii) Idee ?? Walter -- Per favore non inviatemi allegati in formato MS Office. Utilizza alternativamente documenti in formato OpenDocument. http://oinophilos.blogspot.com/___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Espressioni regolari
On Wed, 25 May 2011 14:57:17 +0100 (BST), Walter Valenti wrote: > Ho delle stringe, dove i caratteri che non sono le lettere maiuscole e > minuscole e i numeri, > vengono sostituiti da "__codice.ascii__" ovvero: > doppio underscore + codice ascii + doppio underscore. > > > Per decodificarli pensavo di usare le espressioni regolari. > Qualcosa del tipo > p=re.compile('__\d\d__|__\d\d\d__') > il problema è che quando voglio eseguire la "sub", non so come fare a > passargli il numero (cod_ascii) > > Idee ?? La funzione re.sub (o il metodo sub dell'oggetto Pattern) supportano una funzione come argomento per il "replace": la funzione prende in input l'oggetto match e deve restituire una stringa che viene sostituita alla parte matchata:: >>> rex = re.compile(r'__(\d+)__') >>> rex.sub(lambda m: chr(int(m.group(1))), 'un__65__ pr__79__va') 'unA prOva' Comunque, OT, se devi proprio inventarti un formato di codifica, prendi in considerazione l'uso di un formato standard, tipo il percent encoding, che è anche supportato dalla stdlib (vedi http://docs.python.org/library/urllib.html#urllib.quote). -- 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] Espressioni regolari
Funziona!!! perfetto. - Messaggio originale - > Da: Daniele Varrazzo > A: Walter Valenti ; Discussioni generali sul > linguaggio Python > Cc: > Inviato: Mercoledì 25 Maggio 2011 16:16 > Oggetto: Re: [Python] Espressioni regolari > > On Wed, 25 May 2011 14:57:17 +0100 (BST), Walter Valenti > wrote: >> Ho delle stringe, dove i caratteri che non sono le lettere maiuscole e >> minuscole e i numeri, >> vengono sostituiti da "__codice.ascii__" ovvero: >> doppio underscore + codice ascii + doppio underscore. >> >> >> Per decodificarli pensavo di usare le espressioni regolari. >> Qualcosa del tipo >> p=re.compile('__\d\d__|__\d\d\d__') >> il problema è che quando voglio eseguire la "sub", non so come > fare a >> passargli il numero (cod_ascii) >> >> Idee ?? > > La funzione re.sub (o il metodo sub dell'oggetto Pattern) supportano una > funzione come argomento per il "replace": la funzione prende in input > l'oggetto match e deve restituire una stringa che viene sostituita alla > parte matchata:: > > >>> rex = re.compile(r'__(\d+)__') > >>> rex.sub(lambda m: chr(int(m.group(1))), 'un__65__ > pr__79__va') > > > 'unA prOva' > > Comunque, OT, se devi proprio inventarti un formato di codifica, prendi in > considerazione l'uso di un formato standard, tipo il percent encoding, che > è anche supportato dalla stdlib (vedi > http://docs.python.org/library/urllib.html#urllib.quote). > > -- > Daniele Varrazzo - Develer S.r.l. > http://www.develer.com > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python