Python中替换字符串中字符的最简单方法是什么?
例如:
text = "abcdefg";
text[1] = "Z";
^
#1楼
Python字符串是不可变的,您可以通过复制来更改它们。
做您想做的最简单的方法可能就是。
text = "Z" + text[1:]
text [1:]从位置1到结尾返回文本字符串,位置从0开始计数,因此'1'是第二个字符。
编辑:您可以对字符串的任何部分使用相同的字符串切片技术
text = text[:1] + "Z" + text[2:]
或者,如果该字母仅出现一次,则可以使用下面建议的搜索和替换技术
#2楼
new = text[:1] + 'Z' + text[2:]
#3楼
不要修改字符串。
与他们一起工作; 仅在需要时才将它们转换为字符串。
>>> s = list("Hello zorld")
>>> s
['H', 'e', 'l', 'l', 'o', ' ', 'z', 'o', 'r', 'l', 'd']
>>> s[6] = 'W'
>>> s
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> "".join(s)
'Hello World'
Python字符串是不可变的(即无法修改)。 造成这种情况的原因很多 。 除非您别无选择,否则请使用列表,然后将它们转换为字符串。
#4楼
就像其他人所说的那样,通常Python字符串应该是不可变的。
但是,如果您使用python.org上的CPython实现,则可以使用ctypes修改内存中的字符串结构。
这是我使用该技术清除字符串的示例。
为了完整起见,我提到此内容,这应该是您的最后选择,因为它有点黑。
#5楼
从python 2.6和python 3开始,您可以使用可变的字节数组(可以与字符串不同,可以逐个元素地更改):
s = "abcdefg"
b_s = bytearray(s)
b_s[1] = "Z"
s = str(b_s)
print s
aZcdefg
编辑:更改为s
edit2:正如两位炼金术士在评论中所述,此代码不适用于unicode。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3189500