改变字符串中的一个字符

新手上路,请多包涵

Python 中替换字符串中字符的最简单方法是什么?

例如:

 text = "abcdefg";
text[1] = "Z";
           ^

原文由 kostia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 183
2 个回答

不要修改字符串。

使用它们作为列表;仅在需要时将它们转换为字符串。

 >>> 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 字符串是不可变的(即它们不能被修改)。这有 很多 原因。使用列表,直到你别无选择,然后才将它们变成字符串。

原文由 scvalex 发布,翻译遵循 CC BY-SA 2.5 许可协议

最快的方法?

有三种方法。对于追求速度的人,我推荐“方法 2”

方法一

由这个 答案 给出

text = 'abcdefg'
new = list(text)
new[6] = 'W'
''.join(new)

与“方法 2”相比,这非常慢

timeit.timeit("text = 'abcdefg'; s = list(text); s[6] = 'W'; ''.join(s)", number=1000000)
1.0411581993103027

方法 2(快速方法)

由这个 答案 给出

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

原文由 Mehdi Nellen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题