Array of characters in python 3? Array of characters in python 3? python-3.x python-3.x

Array of characters in python 3?


Use an array of bytes 'b', with encoding to and from a unicode string.

Convert to and from a string using array.tobytes().decode() and array.frombytes(str.encode()).

>>> x = array('b')>>> x.frombytes('test'.encode())>>> xarray('b', [116, 101, 115, 116])>>> x.tobytes()b'test'>>> x.tobytes().decode()'test'


It seems that the python devs are not longer supporting storing strings in arrays since most of the use cases would use the new bytes interface or bytearray. @MarkPerryman's solution seems to be your best bet although you could make the .encode() and .decode() transparent with a subclass:

from array import arrayclass StringArray(array):    def __new__(cls,code,start=''):        if code != "b":            raise TypeError("StringArray must use 'b' typecode")        if isinstance(start,str):            start = start.encode()        return array.__new__(cls,code, start)    def fromstring(self,s):        return self.frombytes(s.encode())    def tostring(self):        return self.tobytes().decode()x = StringArray('b','test')print(x.tostring())x.fromstring("again")print(x.tostring())


Addition to the answer of Mark Perryman:

>> x.frombytes('hellow world'.encode())>>> xarray('b', [116, 101, 115, 116, 104, 101, 108, 108, 111, 119, 32, 119, 111, 114, 108, 100])>>> x.tostring()b'testhellow world'>>> x[1]101>>> x[1]^=0x1>>> x[1]100>> x.tobytes().decode()'wdsthellow world'>>> x.tobytes<built-in method tobytes of array.array object at 0x11330b7b0>>>> x.tobytes()b'wdsthellow world'

Exactly, I need to convert a special byte from my array list recently,have tried various methods, then get the new simple method:x[1]^=0x1, and could get a array easily via array.array['b', <my bytes list>]