Topic: Problema con una stringa  (Letto 51 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline zioMauri

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Problema con una stringa
« il: Marzo 08, 2019, 23:46 »
Un saluto a tutti,
Sto usando python 3.5.3 con raspberry, questo il problema:
Con la mia applicazione ricevo dati da una macchina tramite porta seriale, questa macchina mi invia una stringa composta in questo modo
b'\x021302000B20\x03\x02130417\x03' dove 0x02 sono i byte di inizio stringa e 0x03 quelli di fine stringa, quindi le due stringhe da estrarre
sarebbero "1302000B20" e "130417".
C'è un modo rapido per separare le stringhe dati dai byte di controllo? Se si potesse fare anche gia in fase di lettura dal buffer seriale , ancora meglio
Grazie

Offline bebo

  • python erectus
  • ***
  • Post: 179
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:Problema con una stringa
« Risposta #1 il: Marzo 09, 2019, 02:34 »
Potresti splittare sul char di inizio, o di fine, e poi togliere anche quello finale/iniziale.
ad esempio, splittando sul char finale \x03:


>>> head, tail = b'\x02', b'\x03'
>>> [element.lstrip(head) for element in stream.rstrip(tail).split(tail)]
[b'1302000B20', b'130417']

quel primo rstrip serve per evitare di avere un elemento vuoto alla fine causato dallo split seguente.

Offline zioMauri

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:Problema con una stringa
« Risposta #2 il: Marzo 11, 2019, 22:46 »
Ok, funziona perfettamente.
Grazie