Python 更改同一列的内容并写入同一文件
我想将文件中每行第2列(单个字符)的内容更改为字母“k”,下面是我的代码: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() 我
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
创建为一个新字符串,这对我来说似乎有点奇怪,无论如何,我还是个新手,需要在这方面下功夫。。。