Ciao a tutti! ho un problema con l'estrazione di alcuni valori da una stringa generata dal comando "r.info map=dtm10" di grass.
stringa=""" +----------------------------------------------------------------------------+ | Layer: dt...@trentino Date: Tue Sep 1 12:33:16 2009 | | Mapset: trentino Login of Creator: pietro | | Location: trentinGBrm40 | | DataBase: /dati/pietro/lavoro/GIS | | Title: ( dtm10 ) | | Timestamp: none | |----------------------------------------------------------------------------| | | | Type of Map: raster Number of Categories: 3759 | | Data Type: CELL | | Rows: 10216 | | Columns: 12220 | | Total Cells: 124839520 | | Projection: Transverse Mercator | | N: 5159000 S: 5056840 Res: 10 | | E: 1731640 W: 1609440 Res: 10 | | Range of data: min = 52 max = 3759 | | | | Data Description: | | generated by r.in.arc | | | | Comments: | | r.in.arc input="/dati/pietro/lavoro/GIS/DTM10_integerMIO.asc" output\ | | ="dtm10" type="CELL" mult=1.0 | | | +----------------------------------------------------------------------------+ """ vorrei estrarre la chiave ed il valore creando un dizionario {'Layer':'dt...@trentino'. 'Date':'Tue Sep 1 12:33:16 2009', 'Mapset':'trentino', 'etc':'etc',} per farlo pensavo di ricorrere ad una regexp ma non sono riuscito a trovare la giusta soluzione... regexp = re.compile(r"""(?P<key>([A-Z]?[A-Za-z0-9]+\s?)+):\s+\(?\s?(?P<val>([A- Za-z0-9/=]+\s?)+)\s?\)?""") l=regexp.findall(stringa) PROBLEMI ========== 1: mi trova 4 valori e non 2. 2: la data non la trova potrei estrarla in seguito con un'altra regexp del tipo: """(?P<day>[A-Z][a-z]{2})\s(?P<month>[A-Z][a-z] {2})\s+(?P<nday>\d{1,2})\s(?P<h>\d{2})\:(?P<m>\d{2})\: (?P<s>\d{2})\s(?P<year>\d{4})\s""" 3: "Range of data: min = 52 max = 3759" e "Comments: r.in.arc input="/dati/pietro/lavoro/GIS/DTM10_integerMIO.asc" output="dtm10" type="CELL" mult=1.0" non vengono presi... Esiste una regexp in grado di prendere tutto quello che mi interessa in un colpo solo? o è necessario fare più passate? oppure costruire una funzione ad hoc? DUBBI: ========= 1: Forse in questo caso mi converrebbe fare il binding direttamente delle funzioni in C che costruiscono la stringa in quel modo? (http://svn.osgeo.org/grass/grass/trunk/raster/r.info/) 2: Per un lavoro di questo tipo cosa consigliereste ctypes o cython? Grazie per l'aiuto! scusate la lunghezza... e l'ignoranza :-) Pietro
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python