This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年07月11日 02:57 by devplayer, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| str bug.bmp | devplayer, 2014年07月11日 02:57 | py.exe console showing str bug | ||
| Messages (2) | |||
|---|---|---|---|
| msg222718 - (view) | Author: Dev Player (devplayer) | Date: 2014年07月11日 02:57 | |
str(b'text') returns double quoted item with b prefix within the str() object as so: "b'text'" in python interpreter. It seems the "b" shouldn't be within the outter quotes or apart of the str() instance data. Is this a bug or new syntax? I personally haven't see any documentation that this is the correct behavior. Nor did I find any previously register issue tickets. >>>bchars_list = [b'o', b'n', b'e'] >>>bchars_list [b'o', b'n', b'e'] >>>[str(x) for x in bchars_list] ["b'o'", "b'n'", "b'e'"] |
|||
| msg222724 - (view) | Author: Ned Deily (ned.deily) * (Python committer) | Date: 2014年07月11日 05:30 | |
This is as expected. In Python 3, b'text' represents a bytes object. "Passing a bytes object to str() without the encoding or errors arguments falls under the first case of returning the informal string representation".
Also, in the case of simple bytes objects, their str() representation is the same as their repr() representation. For many simple types, the repr() representation of an object allows you to recover the object by using eval().
>>> b'one'
b'one'
>>> type(b'one')
<class 'bytes'>
>>> str(b'one')
"b'one'"
>>> repr(b'one')
"b'one'"
>>> eval(repr(b'one'))
b'one'
>>> b'one'.decode('ascii')
'one'
https://docs.python.org/3/library/stdtypes.html#str
https://docs.python.org/3/library/functions.html#repr
Python 2 (as of 2.6) accepts b'text' literals to make writing code compatible with both Py2 and Py3 easier. However, Py2 treats b'text' the same as 'text'.
>>> b'one'
'one'
>>> type(b'one')
<type 'str'>
>>> str(b'one')
'one'
>>> b'one'.decode('ascii')
u'one'
https://docs.python.org/2/whatsnew/2.6.html#pep-3112-byte-literals
|
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:05 | admin | set | github: 66153 |
| 2014年07月11日 05:30:45 | ned.deily | set | status: open -> closed nosy: + ned.deily messages: + msg222724 resolution: not a bug stage: resolved |
| 2014年07月11日 02:57:23 | devplayer | create | |