在Python中更改字符串中的一个字符

你说的曾经没有我的故事 提交于 2020-03-07 12:58:21

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修改内存中的字符串结构。

这是我使用该技术清除字符串的示例。

在python中将数据标记为敏感

为了完整起见,我提到此内容,这应该是您的最后选择,因为它有点黑。


#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。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!