[Python] modo furbo per trovare pattern differenti in una stringa

Yuri yurj a alfa.it
Mar 13 Feb 2024 16:44:47 CET


Ciao,

  se fai split sulla riga con separatore lo spazio e guardi quelle che 
cominciano con GX, non è meglio? Lì prendi quelli che cominciano per X, 
Y e Z. Ignori le righe che non servono (quelle che cominciano per ; ad 
esempio).

Con regexp, posso suggerirti questo:

https://stackoverflow.com/a/3533526/15822654

che sembra affrontare il tuo problema, cioè il match di token sparsi 
casualmente in una stringa.

Il 13/02/24 14:32, Perini Matteo ha scritto:
> Ciao a tutti,
> è da un po' che non scrivo.
> Vi chiedo aiuto perchè sto cercando di leggere delle coordinate da un file Gcode.
> Un esempio del testo da parsare è:
> ;LAYER:1
> ;MESH:untitled.stl
> G0 F7200 X1298 Y1798 Z4
> ;TYPE:WALL-OUTER
> G1 F1800 X702 Y1798 E1494.81223
> G1 X702 Y1202 E2242.21834
> G92 E0
> G1 X1298 Y1202 E747.40611
> G1 Y1798 X1298 E1494.81223
> ;TIME_ELAPSED:177.752007
> ;CHANGE;
> ;LAYER:2
> ;MESH:untitled.stl
> G0 F7200 X1298 Y1798 Z6
> ;TYPE:WALL-OUTER
> G1 F1800 X702 Y1798 E2242.21834
> G92 E0
> G1 X702 Y1202 E747.40611
> non ho grossi problemi ad effettuare un parsing corretto ma lo sto facendo con vari if, elif, case,  ecc. cosa che non mi piace molto.
> Stavo provando ad utilizzare le regex ma non sto riuscendo a fare quello che voglio (in modo pulito) ovvero identificare le coordinate X, Y e Z anche se in alcuni casi hanno posizioni invertite.
> Vorrei anche attribuire un nome al gruppo identificato in modo da usarlo come dizionario.
> Stavo usando alcuni pattern tipo ".*Z(?P<Z>\d+[.]?\d*)" che vanno bene per individuare le coordinate di 
> un asse ma capita che le righe contengano x y e z oppure solo Z oppure 
> solo x e y. Importante, in alcuni casi potrebbero essere anche in 
> ordine differente tipo z y e x. Per ora i numeri dopo E e F posso 
> trascurarli ma vi chiederei aiuto per riuscire ad ottenere le 
> coordinate da ogni riga. se tutte le righe rispettassero lo stesso 
> pattern non avrei problemi ma non so come affrontare soprattutto il 
> problema di avere pattern diversi in ordine (quasi) random. Spero di 
> essere stato abbastanza chiaro. Grazie a tutti Matteo
>
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20240213/3cd363ef/attachment.html>


Maggiori informazioni sulla lista Python