更改字符串中的字符
在Python中,替换字符串中的字符最简单的方法是什么?
比如说:
text = "abcdefg";
text[1] = "Z";
^
16 个回答
156
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用特定的代码时,发现它没有按照预期的方式工作。这种情况下,通常需要仔细检查代码,看看哪里出了问题。
有时候,问题可能出在代码的某个小细节上,比如拼写错误、缺少某个部分,或者是使用了不兼容的版本。这就需要我们耐心地去调试,逐步找出问题所在。
此外,社区中的其他开发者也可能遇到过类似的问题,他们的经验和解决方案可以给我们提供很大的帮助。因此,向社区求助,或者查阅相关的文档和资料,都是解决问题的好方法。
总之,编程过程中遇到问题是很正常的,关键是要保持冷静,逐步分析,最终找到解决方案。
new = text[:1] + 'Z' + text[2:]
315
最快的方法是什么?
这里有三种方法。
如果你追求速度,我推荐“方法二”。
方法一:
这是来自 scvalex的回答:
text = 'abcdefg'
new = list(text)
new[6] = 'W'
''.join(new)
这个方法相比“方法二”来说速度比较慢:
timeit.timeit("text = 'abcdefg'; s = list(text); s[6] = 'W'; ''.join(s)", number=1000000)
1.0411581993103027
方法二(快速方法):
这是来自 Jochen Ritzel的回答:
text = 'abcdefg'
text = text[:1] + 'Z' + text[2:]
这个方法要快得多:
timeit.timeit("text = 'abcdefg'; text = text[:1] + 'Z' + text[2:]", number=1000000)
0.34651994705200195
方法三:
字节数组:
timeit.timeit("text = 'abcdefg'; s = bytearray(text); s[1] = 'Z'; str(s)", number=1000000)
1.0387420654296875
745
不要修改字符串。
把它们当成列表来使用;只有在需要的时候再把它们变成字符串。
>>> 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中,字符串是不可变的(也就是说,它们不能被修改)。这背后有很多原因。你可以先使用列表,直到没有其他选择,才把它们转换成字符串。