Python ricerca stringa
-
achilledue
- Prode Principiante
- Messaggi: 165
- Iscrizione: lunedì 28 maggio 2007, 21:52
Python ricerca stringa
Salve devo trovare nel testo seguente:
'\x13*\x08\xcb!\x1bXR\xc0\x05\x00\x00\x00\x00\x00I\xc0xl\xbea\x10\xc0T\xc0\x13\x01\x00\x00\x00\x00\x00I@%\x08\xcb!\x1b\x18Q@\x88"\xed{\x9e\xcfD@\x11\r\x04body\x0c\x04\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0b\x11\x0e\x16named_string_attribute\x0e\x0fnamed_attribute\x0e\x02st\r\x06attrib\x0c\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\x05\x00\x00\x00\x0c\xff\xff\xff\xff\x0c\x00\x00\x00\x00\x04\xa5\xee\xdf\x00\x07\x04name\x07\x1dFreeCurveCube_SenzaManico.sab\x11\r\x04lump\x0c\x06\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\x07\x00\x00\x00\x0c\x00\x00\x00\x00\n'
la stringa FreeCurveCube_SenzaManico.sab ma non so come filtrare il testo essendo caratteri esadecimali se ho ben capito.
La stringa comincia con il carattere x1d
Grazie
'\x13*\x08\xcb!\x1bXR\xc0\x05\x00\x00\x00\x00\x00I\xc0xl\xbea\x10\xc0T\xc0\x13\x01\x00\x00\x00\x00\x00I@%\x08\xcb!\x1b\x18Q@\x88"\xed{\x9e\xcfD@\x11\r\x04body\x0c\x04\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0b\x11\x0e\x16named_string_attribute\x0e\x0fnamed_attribute\x0e\x02st\r\x06attrib\x0c\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\x05\x00\x00\x00\x0c\xff\xff\xff\xff\x0c\x00\x00\x00\x00\x04\xa5\xee\xdf\x00\x07\x04name\x07\x1dFreeCurveCube_SenzaManico.sab\x11\r\x04lump\x0c\x06\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\x07\x00\x00\x00\x0c\x00\x00\x00\x00\n'
la stringa FreeCurveCube_SenzaManico.sab ma non so come filtrare il testo essendo caratteri esadecimali se ho ben capito.
La stringa comincia con il carattere x1d
Grazie
Re: Python ricerca stringa
Codice: Seleziona tutto
text = '\x13*\x08\xcb!\x1bXR\xc0\x05\x00\x00\x00\x00\x00I\xc0xl\xbea\x10\xc0T\xc0\x13\x01\x00\x00\x00\x00\x00I@%\x08\xcb!\x1b\x18Q@\x88"\xed{\x9e\xcfD@\x11\r\x04body\x0c\x04\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0b\x11\x0e\x16named_string_attribute\x0e\x0fnamed_attribute\x0e\x02st\r\x06attrib\x0c\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\x05\x00\x00\x00\x0c\xff\xff\xff\xff\x0c\x00\x00\x00\x00\x04\xa5\xee\xdf\x00\x07\x04name\x07\x1dFreeCurveCube_SenzaManico.sab\x11\r\x04lump\x0c\x06\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\x07\x00\x00\x00\x0c\x00\x00\x00\x00\n'
stringToFind = 'FreeCurveCube_SenzaManico.sab'
pos = text.index(stringToFind)
print '%s si trova in posizione %d' % ( stringToFind, pos )Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
achilledue
- Prode Principiante
- Messaggi: 165
- Iscrizione: lunedì 28 maggio 2007, 21:52
Re: Python ricerca stringa
Grazie Zoff
la tua risposta è precisa e puntuale ma la mia domanda era posta male :-( .Io cerco la stringa Nome.sab che ho visto, ha come primo carattere aggiunto x1d.
Posso eventualmente cercare la stringa che mi interesse e che so terminare con: .sab e ripulirla dal carattere x1d?
la tua risposta è precisa e puntuale ma la mia domanda era posta male :-( .Io cerco la stringa Nome.sab che ho visto, ha come primo carattere aggiunto x1d.
Posso eventualmente cercare la stringa che mi interesse e che so terminare con: .sab e ripulirla dal carattere x1d?
Re: Python ricerca stringa
Non credo di aver capito cosa intendi per "cercare".
Quali sono gli input che vuoi immettere e l'output atteso?
Quali sono gli input che vuoi immettere e l'output atteso?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
achilledue
- Prode Principiante
- Messaggi: 165
- Iscrizione: lunedì 28 maggio 2007, 21:52
Re: Python ricerca stringa
Dal testo che vedi devo estrarre un nome variabile nome.sab. In pratica devo fare una scansione del file e assegnare, ad esempio, nella variabile A il nome trovato.
La mia diffcioltà sta nel fatto che tratto dei caratteri esadecimali.
Spero di essere stato chiaro mi rendo conto che magari anziche chiarrirti le idee te le confondo :-)
La mia diffcioltà sta nel fatto che tratto dei caratteri esadecimali.
Spero di essere stato chiaro mi rendo conto che magari anziche chiarrirti le idee te le confondo :-)
Re: Python ricerca stringa
Puoi usare il modulo per le regular expressions:
Tutto sta nel tarare la regexp perché supporti tutti i possibili caratteri che possono capitare.
Codice: Seleziona tutto
import re
text = '\x13*\x08\xcb!\x1bXR\xc0\x05\x00\x00\x00\x00\x00I\xc0xl\xbea\x10\xc0T\xc0\x13\x01\x00\x00\x00\x00\x00I@%\x08\xcb!\x1b\x18Q@\x88"\xed{\x9e\xcfD@\x11\r\x04body\x0c\x04\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0b\x11\x0e\x16named_string_attribute\x0e\x0fnamed_attribute\x0e\x02st\r\x06attrib\x0c\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\x05\x00\x00\x00\x0c\xff\xff\xff\xff\x0c\x00\x00\x00\x00\x04\xa5\xee\xdf\x00\x07\x04name\x07\x1dFreeCurveCube_SenzaManico.sab\x11\r\x04lump\x0c\x06\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\x07\x00\x00\x00\x0c\x00\x00\x00\x00\n'
print re.search('[a-zA-Z-_+]+.sab',text).group(0)
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- Claudio_F
- Entusiasta Emergente

- Messaggi: 1463
- Iscrizione: lunedì 28 maggio 2012, 18:49
- Desktop: Mate/Gnome
- Distribuzione: Ubu22.04
Re: Python ricerca stringa
O, in alternativa, si cerca '.sab' con index e si scorre indietro fino a incontrare il byte '\x1d'
Codice: Seleziona tutto
j = i = text.index('.sab')
while text[i] != '\x1d':
i -= 1
name = text[i+1:j+4]
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Python ricerca stringa
oppure
Codice: Seleziona tutto
>>> import re
>>> s='\x13*\x08\xcb!\x1bXR\xc0\x05\x00\x00\x00\x00\x00I\xc0xl\xbea\x10\xc0T\xc0\x13\x01\x00\x00\x00\x00\x00I@%\x08\xcb!\x1b\x18Q@\x88"\xed{\x9e\xcfD@\x11\r\x04body\x0c\x04\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0b\x11\x0e\x16named_string_attribute\x0e\x0fnamed_attribute\x0e\x02st\r\x06attrib\x0c\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\x05\x00\x00\x00\x0c\xff\xff\xff\xff\x0c\x00\x00\x00\x00\x04\xa5\xee\xdf\x00\x07\x04name\x07\x1dFreeCurveCube_SenzaManico.sab\x11\r\x04lump\x0c\x06\x00\x00\x00\x04\xff\xff\xff\xff\x04\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\xff\xff\xff\xff\x0c\x07\x00\x00\x00\x0c\x00\x00\x00\x00\n'
>>> m = re.search('(?<=\x1d)(.+\.sab)', s)
>>> m.group(0)
'FreeCurveCube_SenzaManico.sab'
>>> m.start()
185
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Python ricerca stringa
ripensandoci, la mia soluzione potrebbe non andare bene: davo per scontato che \x1d fosse un separatore univoco, ma potrebbe benissimo non essere così, e in quel caso matcha troppo.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
achilledue
- Prode Principiante
- Messaggi: 165
- Iscrizione: lunedì 28 maggio 2007, 21:52
Re: Python ricerca stringa
Grazie a chi mi ha risposto oggi provo
- Claudio_F
- Entusiasta Emergente

- Messaggi: 1463
- Iscrizione: lunedì 28 maggio 2012, 18:49
- Desktop: Mate/Gnome
- Distribuzione: Ubu22.04
Re: Python ricerca stringa
E comunque per quanto riguarda i "caratteri esadecimali" è un problema apparente, cioè non vi è alcun problema. In Python2 tutti i caratteri di una stringa non unicode sono comunque byte, rappresentati nel programma con i simboli ASCII corrispondenti al loro valore dove possibile, o con sequenze di escape \xNN, quando non vi è un corrispondente simbolo, ma, ad esempio, la 'A' si può indifferentemente scrivere: '\x41'
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti
