Python 更改同一列的内容并写入同一文件

Python 更改同一列的内容并写入同一文件,python,Python,我想将文件中每行第2列(单个字符)的内容更改为字母“k”,下面是我的代码: f = open('test.txt') f_str = f.readlines() f.close() for line in f_str: s = list(line) s[1] = "k" line = ''.join(s) print line f = open('test.txt', 'w') f.writelines(f_str) f.close() 我

我想将文件中每行第2列(单个字符)的内容更改为字母“k”,下面是我的代码:

f = open('test.txt')
f_str = f.readlines()
f.close()

for line in f_str:
    s = list(line)
    s[1] = "k"
    line = ''.join(s)
    print line   

f = open('test.txt', 'w')
f.writelines(f_str)      
f.close()

我成功地更改了for循环中的内容(打印结果显示了这一点),但未能将更改后的结果写入文件。如果您有任何建议,我们将不胜感激

您不更新
f_str
,因此您最终会写出与您在中读到的完全相同的行。将修改后的行添加到新列表中,而不是打印修改后的行

new_lines = []
with open("test.txt") as f:
    for line in f:
        new_line = list(line)
        new_line[1] = "k"
        new_lines.append(''.join(new_line))

with open("test.txt", "w") as f:
    f.writelines(new_lines)

你写的文本与你读到的完全相同:
f.writelines(f_str)
。您从未更新过
f_str
@Tim感谢您的回复,我认为
f_str
是在for循环中更新的,因为
line
f_str
的一个元素,并且
line
的值已更改。我在这里不知所措……当你迭代
f_str
并修改
line
时,你没有在适当的位置编辑它。
f_str
中的值不会被更改。@再次感谢您的及时回复,我不确定您“未就地编辑”的意思,请您详细解释一下好吗?非常感谢:)当您修改循环中
line
的值时,将在引擎盖下创建一个新变量。
f_str
中的值没有更改。值得添加的是
s=list(line)
创建了一个新对象-一个新列表。与
line=''相同。join(s)
-创建一个新字符串,而不是修改“旧”行对象。“旧”行对象保持不变。@Tim谢谢你的回答,@dmitri应该将
line
创建为一个新字符串,这对我来说似乎有点奇怪,无论如何,我还是个新手,需要在这方面下功夫。。。