python中for循环块中的多行

时间:2016-11-11 04:56:09

标签: python-2.7 for-loop

我在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循环块中占用最后一行。任何人都可以指出我哪里错了?谢谢!

3 个答案:

答案 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')...