Eliminare caratteri da stringa- Python

Pubblicità

Tommaso Sala

Utente Attivo
Messaggi
868
Reazioni
140
Punteggio
46
Data la stringa b'141\r\n' come faccio ad ottenere solo 141? posso facilmente togliere b' così
Codice:
stringa = stringa[2:]
ma la parte finale? Considerate che 141 è solo un esempio, potrebbe essere a due o a quattro cifre anche per cui non posso cavermela con [:3]!
 
Un po’ difficile risponderti se non specifichi le regole di estrazione. Cosa distingue la stringa "141" dal resto?
 
Un po’ difficile risponderti se non specifichi le regole di estrazione. Cosa distingue la stringa "141" dal resto?
Temo di non aver capito la domanda. Quella stringa è frutto di serial.readlines() che uso per prendere i dati dal monitor seriale di arduino. Visto che a me serve poi sfruttare quel numero e lavorarci come intero mi serve innanzitutto isolarlo, o sbaglio

Inviato da SM-G361F tramite App ufficiale di Tom\'s Hardware Italia Forum
 
È quello che avresti dovuto specificare dall'inizio.
Ora rispondi: la stringa inizia sempre con b', e finisce con \r\n ? Ti serve solo quello che c’è in mezzo?
 
È quello che avresti dovuto specificare dall'inizio.
Ora rispondi: la stringa inizia sempre con b', e finisce con \r\n ? Ti serve solo quello che c’è in mezzo?
Esattamente, considera che la parte finale non riesco a toglierla nemmeno con stringa[:2]
Hai pensato ad usare una regex come la seguente?

Codice:
^b'(.*)'$

Spiegazione della regex: https://regex101.com/r/eQhmmG/1
Non riesco a capire cosa faccia e per quale fine...

Inviato da SM-G361F tramite App ufficiale di Tom\'s Hardware Italia Forum
 
Ultima modifica:
Scarti I primi due caratteri e gli ultimi quattro. Difficile sapere se il backslash in questo caso è un carattere o rappresenta un carattere speciale. Devi provare.
 
Esattamente, considera che la parte finale non riesco a toglierla nemmeno con stringa[:2]

Non riesco a capire cosa faccia e per quale fine...

Inviato da SM-G361F tramite App ufficiale di Tom\'s Hardware Italia Forum

La regex ti permette di isolare un gruppo che puoi estrapolare in seguito. Se la stringa è composta sempre in questa maniera:

Codice:
b'NUMERO'\r\n

Ti basta allora una regex tipo:

Codice:
^b'(\d+)'

^: inizio della stringa
b': serie di caratteri b e ' (literal match)
(: inizio gruppo (1)
\d+: una o più occorrenze di caratteri numerici
): fine gruppo (1)
': carattere ' (literal match)

Python:
import re

result = re.search(r"^b'(\d+)'", "b'123'", re.IGNORECASE)
print(result.group(1))

Oppure fai come scritto da @Andretti60
 
edit: ma il b' iniziale è parte della stringa o indica che il valore è binarystring?
Per intenderci, quale dei due seguenti è il tuo caso?
Codice:
stringa = b'141\r\n'
stringa = "b'141\r\n'"
edit2: immagino sia il secondo, allora non ho niente da aggiungere.
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top