[New-bugs-announce] [issue8662] bytes join cannot join bytes

Timothy Pederick report at bugs.python.org
Sat May 8 18:50:50 CEST 2010


New submission from Timothy Pederick <pederick at gmail.com>:

This code behaves as expected:
>>> ' '.join('cat')
'c a t'

This code does not:
>>> b'\x00'.join(b'cat')
Traceback (most recent call last):
  ...
    b'\x00'.join(b'cat')
TypeError: sequence item 0: expected bytes, int found

Instead, you have to do something like this:
>>> b'\x00'.join(bytes((i,)) for i in b'cat')
b'c\x00a\x00t'

The cause is that indexing a bytes object gives an int, not a bytes. I know, it's as designed, PEP 3137, etc. But in this specific instance, it causes Python to behave inconsistently (bytes vs. str) and unintuitively (to me, anyway).

(Same problem with bytes or bytearray in either position.)

----------
files: joinerror.py
messages: 105317
nosy: perey
priority: normal
severity: normal
status: open
title: bytes join cannot join bytes
type: behavior
versions: Python 3.1
Added file: http://bugs.python.org/file17262/joinerror.py

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8662>
_______________________________________


More information about the New-bugs-announce mailing list