On Tue, Jul 17, 2018 at 7:50 AM, Roel Schroeven <r...@roelschroeven.net> wrote:
> Steven D'Aprano schreef op 16/07/2018 2:18:
>>
>> On Sun, 15 Jul 2018 16:08:15 -0700, Jim Lee wrote:
>>
>>> Python3 is intrinsically tied to Unicode for string handling. Therefore,
>>> the Python programmer is forced to deal with it (in all but trivial
>>> cases), rather than given a choice.  So I don't understand how I can
>>> illustrate my point with Python code since Python won't let me deal with
>>> strings without also dealing with Unicode.
>>
>>
>> Nonsense.
>>
>> b"Look ma, a Python 2 style ASCII string."
>
>
> Except for one little difference, which has bitten be me a few times.
> Consider this code:
>
> from __future__ import print_function
> s = b"Look ma, a Python 2 style ASCII string."
> print('First element:', s[0])
>
> Result in Python 2: First element: L
> Result in Python 3: First element: 76
>
> Likewise this code:
>
> from __future__ import print_function
> for e in b'hello':
>   print(e, end=', ')
> print()
>
> Result in Python 2: h, e, l, l, o,
> Result in Python 3: 104, 101, 108, 108, 111,
>
> There are times (encoding/decoding network protocols and other data formats)
> when I have a byte string and I want/need to process it like Python 2 does,
> and that is the one area where I feel Python 3 make things a bit more
> difficult.
>

For the most part, you probably want to decode it as ASCII, if you
want to process it as text. Remember, bytes are simply numbers -
octets, groups of eight bits. For it to mean the English word "hello",
that byte sequence has to be interpreted as ASCII, which is accurately
indicated as b'hello'.decode('ascii').

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to