python字符串就地修改

时间:2012-02-25 02:22:47

标签: python string

人,

假设我想在Python中将'abc'更改为'bac'。最好的方法是什么?

我正在考虑以下

tmp = list('abc')
tmp[0],tmp[1] = tmp[1],tmp[0]
result = ''.join(tmp)

2 个答案:

答案 0 :(得分:2)

你永远不会在“就地”编辑字符串,字符串是不可变的。

您可以使用列表来执行此操作,但这会浪费代码和内存。

为什么不这样做:

x = 'abc'
result = x[1] + x[0] + x[2:]

或(个人收藏)

import re
re.sub('(.)(.)', r'\2\1','abc')

这可能是作弊,但如果你真的想就地编辑,并且使用的是2.6或更早版本,那么请使用MutableString(这在3.0中已弃用)。

from UserString import MutableString
x = MutableString('abc')
x[1], x[0] = x[0], x[1]
>>>>'bac'

话虽如此,解决方案通常不像'abc'='bac'那么简单。您可能想要提供有关如何拆分字符串的详细信息。它总是只是交换第一个数字?

答案 1 :(得分:1)

您无法修改字符串,它们是不可变的。如果要修改列表,可以像在示例中那样进行,或者如果可以使用切片访问要替换的元素,则可以使用切片分配:

tmp = list('abc')
tmp[0:2] = tmp[1::-1]   # replace tmp[0:2] with tmp[1::-1], which is ['b', 'a']
result = ''.join(tmp)