我在python中有一个非常基本的问题。我想拆分以下列表中的项目并将其打印在文本文件中。
import pandas as pd
s = ['"9-6": 1', ' "15-4": 1', ' "12-3": 1', ' "8-4": 1', ' "8-5": 1', ' "8-1": 1']
print type(s)
for i in s:
j = i.split(',')
with open("out.txt","w") as text_file:
text_file.write("{}".format(j))
但是,我的代码只打印最后一个值。显然,它没有在for循环块中占用最后一行。任何人都可以指出我哪里错了?谢谢!
答案 0 :(得分:1)
您没有附加值。你每次都在重写。试试这样:
with open("out.txt","a+") as text_file:
在这里,我取代了#34; w"通过" a +"。
完整代码:
import pandas as pd
s = ['"9-6": 1', ' "15-4": 1', ' "12-3": 1', ' "8-4": 1', ' "8-5": 1', ' "8-1": 1']
print type(s)
for i in s:
j = i.split(',')
with open("out.txt","a+") as text_file:
text_file.write("{}".format(j))
答案 1 :(得分:0)
每次打开out.txt并使用' w'选项,它甚至在您写任何东西之前完全删除该文件。您应该在for循环开始之前放置with语句,以便文件只打开一次。
答案 2 :(得分:0)
你的for循环的每次迭代,你截断你的文件内容,即。 “清空文件”。这是因为当使用开放模式w
时,Python会隐式截断文件,因为您已在上一次迭代中创建了该文件。 Python 2.7中记录了此行为:
[...]'w'[是]用于写[文件](如果文件已经存在则截断文件)[..]
使用选项a+
代替,它附加到文件。 Python 2.7文档还指出了这一点:
[..] [使用]'a'用于附加[..]
这意味着:
...open('out.txt' 'w')...
应该是:
...open('out.txt', 'a')...