[Python] ValueError: embedded null byte
Alessandro Dentella
sandro a e-den.it
Mer 4 Apr 2018 12:38:44 CEST
On Wed, Apr 04, 2018 at 12:05:44PM +0200, Gollum1 wrote:
> Il 4 aprile 2018 08:56, Alessandro Dentella <sandro a e-den.it> ha scritto:
>
> >> camera = "DigitalDigital HH"
> >
> > Se fosse veramente quello il valore della variabile 'camera' non ci
> > sarebbero problemi:
> >
> > $ ipython3
> >
> > In [1]: import os
> >
> > In [2]: camera = "DigitalDigital HH"
> >
> > In [3]: os.path.exists(os.path.join('/tmp', camera))
> > Out[3]: False
> >
> > Per prima cosa aggiungerei nel try/except:
> >
> > import ipdb; ipdb.set_trace()
>
> questo non mi funziona, non ho il modulo installato evidentemente,
> provvederò quanto prima.
vitale per un debug efficace:
pip install ipdb
> > così sperimenti direttamente e ti fai un'idea chiara.
> > len(camera) ti restituisce 17 o la variabile ha qualche carattere non
> > rappresentato magari nella tua codifica?
>
> bella lì... mi len mi dice che è lungo 32 caratteri... :O
>
> > Prova con repr(camera)
>
> (32) - DigitalDigital HH
> 'Digital\x00\x00Digital \x00H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00'
>
> eccolo lì... e spiegato anche il motivo per cui anche facendo uno
> split sullo spazio, in realtà non risolvevo il problema, non è
> visibile, ma rompe...
>
> esiste un qualche comando che mi permetta di "sanare" una stringa così
> fatta? un camera.encode(utf8) potrebbe essere la soluzione?
In [2]: import re
In [3]: camera = 'Digital\x00\x00Digital \x00H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00'
In [4]: c2 = re.sub('[^a-zA-Z0-9_ ]', '', camera)
In [5]: len(c2)
Out[5]: 17
In [6]: c2
Out[6]: 'DigitalDigital HH'
In [7]: len(camera)
Out[7]: 32
*:-)
Maggiori informazioni sulla lista
Python