Mutable strings
Rob Tillotson
rob at pyrite.org
Mon Sep 22 07:59:00 EDT 2003
hjwidmaier at web.de (Hans-Joachim Widmaier) writes:
> Still, I can see a use for mutable strings. Or better, mutable binary
> data, made up of bytes. (where 'byte' is the smallest individually
> addressable memory unit blabla, ... you get the meaning. Just to not
> invite nit-pickers on that term.)
>
>> "explicit is better than implicit".
>
> Yes, definitely: Let there be another type.
There already is one: array. Mutable blocks of bytes (or shorts,
longs, floats, etc.), usable in many places where you might otherwise
use a string (struct.unpack, writing to a file, etc.). It is not
quite a mutable string, but it does fit the bill for manipulating raw
bytes. For example, off the top of my head:
>>> import array
>>> a = array.array('B','abcdefg')
>>> a
array('B', [97, 98, 99, 100, 101, 102, 103])
>>> a[2:4] = array.array('B','12345')
>>> a
array('B', [97, 98, 49, 50, 51, 52, 53, 101, 102, 103])
>>> a.tostring()
'ab12345efg'
For times when you really need a mutable string, there is always
UserString.MutableString (not quite sure what version this first
appeared in) -- it isn't terribly efficient since it uses a regular
string internally to hold the data, but it gets the job done and if
you really need something faster it would be a fairly simple exercise
to rewrite it using an array instead.
--Rob
--
Rob Tillotson N9MTB <rob at pyrite.org>
More information about the Python-list
mailing list