dirty problem 3 lines
bussiere bussiere
bussiere at gmail.com
Thu Sep 2 06:49:30 EDT 2010
It seems to work perfectly
thanks a lot
Bussiere
Google Fan boy
On Thu, Sep 2, 2010 at 7:32 AM, alex23 <wuwei23 at gmail.com> wrote:
> bussiere bussiere <bussi... at gmail.com> wrote:
>> it's just as it seems :
>> i want to know how does ti works to get back an object from a string in python :
>> pickle.loads("""b'\x80\x03]q\x00(K\x00K\x01e.'""") #doesn't work
>
> Repeating the question without providing any further information
> doesn't really help.
>
> This is a byte string: b'\x80\x03]q\x00(K\x00K\x01e.'
> As MRAB points out, you can unpickle a byte string directly.
>
> This is a doc string: """note the triplet of double quotes"""
> What you have is a doc string that appears to contain a byte string:
> """b'\x80\x03]q\x00(K\x00K\x01e.'"""
>
> So the question for you is: what is putting the byte string inside of
> a doc string? If you can stop that from happening, then you'll have a
> byte string you can directly unpickle.
>
> Now, if you _don't_ have control over whatever is handing you the dump
> string, then you can just use string manipulation to reproduce the
> byte string:
>
>>>> dump = """b'\x80\x03]q\x00(K\x00K\x01e.'"""
>>>> badump = dump[2:-1].encode()[1:]
>>>> pickle.loads(badump)
> [0, 1]
>
> So:
> - dump[2:-1] strips off string representation of the byte string
> (b'...')
> - .encode() turns it into an actual byte string
> - [1:] strips a unicode blank from the start of the byte string (not
> entirely sure how that gets there...)
>
> After that it should be fine to unpickle.
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list