a simple question about string object

Tim Roberts timr at probo.com
Mon Mar 17 01:29:16 EST 2003


"Frank Zheng" <hust_zxq524 at 263.net> wrote:

>Hi, all:
>
>>>> s = '12345'
>>>> s[2] = 'x'
>Traceback (most recent call last):
>  File "<interactive input>", line 1, in ?
>TypeError: object doesn't support item assignment
>
>i know the string object is immutable, so if i want to do 'item assignment',
>i should do:
>>>> new_s = s[0:1] + 'x' + s[2:]
>( i think it's ugly)

It's also wrong:

  new_s = s[0:2] + 'x' + s[3:]

Better yet is:

  new_s = "%sx%s" % (s[0:2],s[3:])

>Is there other ways to do this?
>should i define a function to do this? Is there any modules existing can do
>this?

There is no standard module to do this.  If you need to do this a lot, you
can just convert the string to a list and manipulate the list:

C:\tmp>python
Python 2.2 (#28, Dec 21 2001, 12:21:22) [MSC 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = '12345'
>>> s_lst = list(s)
>>> s_lst[2] = 'x'
>>> s_lst
['1', '2', 'x', '4', '5']
>>> s = ''.join(s_lst)
>>> s
'12x45'
>>>

-- 
- Tim Roberts, timr at probo.com
  Providenza & Boekelheide, Inc.




More information about the Python-list mailing list