1

当我执行以下代码时:

file1 = open("sources.conf", "r");
datalist = list(file1.readlines());
datalist[3][32]= "11";

我得到这个错误:'str' object does not support item assignment。看了一点,我发现在python中不能改变字符串。有没有其他解决方法?

4

3 回答 3

2

切片字符串并将其重新分配到列表中的相同位置:

datalist[3] = datalist[3][:31] + '11' + datalist[3][33:]
于 2013-07-03T16:57:56.450 回答
0

这个怎么样(使用切片):

datalist[3] = datalist[3][:31] + "11" + datalist[3][33:]

此外,Python 不会;在每条语句之后使用。

您还可以将字符串更改为列表,然后再返回:

temp = list(datalist[3])
temp[32:34] = "11"
datalist[3] = "".join(temp)
于 2013-07-03T16:59:22.283 回答
0

我建议您逐行阅读并修改字符串(如果需要)(我不确定这readlines()是最好的解决方案(因为它将整个文件读入内存)

with open("sources.conf", "r") as file1
    datalist = []
    for i, line in  enumerate(file1):
        if i == 3:
            datalist[i] = line[:32] + "11" + line[33:]
        else:
            datalist[i] = line

或使用join方法

datalist[i] = ''.join([line[:32], "11", line[33:]])
于 2013-07-03T17:01:02.567 回答