4 ms·
Bytes in Python 3 don't support string operators. Slight nitpick: `bytes` objects in Python 3 do not share all of the operations and methods available on `str`
by ubernostrum 9y ago
Bytes in Python 3 don't support string operators.
Slight nitpick: `bytes` objects in Python 3 do not share all of the operations and methods available on `str`, but do share quite a few. Notably, `bytes` will never implement format(), but it does implement printf()-style formatting via the modulo operator.
The `bytes` and `bytearray` types implement the following methods which also exist on `str` (in some cases, with the caveat that the operation only makes sense if the bytes in question are in the ASCII range):
capitalize(), center(), count(), endswith(), expandtabs(), find(), index(), isalnum(), isalpha(), isdigit(), islower(), isspace(), istitle(), isupper(), join(), ljust(), lower(), lstrip(), maketrans(), partition(), replace(), rfind(), rindex(), rjust(), rpartition(), rsplit(), rstrip(), split(), splitlines(), startswith(), strip(), swapcase(), title(), translate(), upper(), zfill()
- Avernar 9y agoI didn't realize the modulo operator for bytes was added. most information I've run across said it didn't work. Unfortunately most libraries for 3 will be using str so using bytes with UTF-8 inside will become more and more difficult.
- masklinn 9y ago> I didn't realize the modulo operator for bytes was added. most information I've run across said it didn't work. It was added in Python 3.5 (IIRC that's the last backwards compatibility feature added, I don't remember 3.6 adding any, or any being planned for 3.7).