<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Ciao,</p>
    <p> 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).</p>
    <p>Con regexp, posso suggerirti questo:</p>
    <p><a class="moz-txt-link-freetext" href="https://stackoverflow.com/a/3533526/15822654">https://stackoverflow.com/a/3533526/15822654</a></p>
    <p>che sembra affrontare il tuo problema, cioè il match di token
      sparsi casualmente in una stringa.<br>
    </p>
    <div class="moz-cite-prefix">Il 13/02/24 14:32, Perini Matteo ha
      scritto:<br>
    </div>
    <blockquote type="cite"
      cite="mid:34cae958-8076-4bab-902f-d5df118aa745@gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <pre>Ciao a tutti,</pre>
      <pre>è da un po' che non scrivo.</pre>
      <pre>Vi chiedo aiuto perchè sto cercando di leggere delle coordinate da un file Gcode.</pre>
      <pre>Un esempio del testo da parsare è:</pre>
      <pre>;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</pre>
      <pre>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.</pre>
      <pre>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 "<span
      style="color: rgb(0, 128, 0); white-space: pre;">.*Z(?P<Z>\d+[.]?\d*)" </span><span
      style="white-space: pre;">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


</span></pre>
      <p><br>
      </p>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Python mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Python@lists.python.it">Python@lists.python.it</a>
<a class="moz-txt-link-freetext" href="https://lists.python.it/mailman/listinfo/python">https://lists.python.it/mailman/listinfo/python</a>
</pre>
    </blockquote>
  </body>
</html>