“不要修改字符串。
以列表的形式与他们合作;只在需要时才将它们变成字符串。
...代码示例......
Python字符串是不可变的(即它们不能被修改)。这有很多原因。使用列表直到你别无选择,只有把它们变成字符串。“
这被认为是最佳做法吗?
我觉得有点奇怪,Python有返回新修改字符串的方法(例如upper(),title(),replace()等)但没有返回新字符串的insert方法。我错过了这种方法吗?
编辑:我正在尝试通过插入一个字符来重命名文件:
import os
for i in os.listdir('.'):
i.insert(3, '_')
由于不变性而无效。添加到字符串的开头可以正常工作:
for i in os.listdir('.'):
os.rename(i, 'some_random_string' + i)
Edit2:解决方案:
>>> for i in os.listdir('.'): │··
... os.rename(i, i[:4] + '_' + i[4:])
切片当然很好并且解决了我的问题,但是有没有一个逻辑解释为什么没有insert()方法返回一个新的字符串?
感谢您的帮助。
答案 0 :(得分:2)
如果要在特定位置插入,可以使用切片和+。例如:
a = "hello"
b = a[:2] + '_S1M0N_' + a[2:]
然后b将等于he_S1M0N_llo。
答案 1 :(得分:2)
如果你对字符串做了大量的修改,那至少可以说是最佳实践。 不是一种通用的最佳做法。在执行繁重的字符串操作时,它只是一种解决性能问题的有用技术。
我的建议是,在性能成为问题之前不要这样做。
答案 2 :(得分:0)
您可以使用slice语法定义适用于任何序列(字符串,列表,元组等)的泛型函数:
def insert(s, c, p):
return s[:p] + c + s[p:]
insert('FILE1', '_', 4)
> 'FILE_1'