2016-11-11 106 views
0

我在python中有一个非常基本的问题。我想分割下列列表中的项目并将其打印在文本文件中。蟒蛇for循环块中的多行

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

我不明白你为什么要做'j = i.split(',')',你遍历数组中的每个字符串,然后将每个字符串拆分成由逗号分隔的子字符串,但是任何字符串中都没有逗号。 – mshindal

回答

1

您未附加值。你每次都在重写。像这样尝试:

with open("out.txt","a+") as text_file: 

在这里,我用“a +”替换了“w”。

全码:

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)) 
0

每次打开out.txt与“W”选项的时候,它完全删除该文件之前,你甚至写什么。您应该在for循环开始之前放置with语句,以便该文件仅打开一次。

+0

有道理!谢谢 –

0

你的for循环的每一次迭代,你截断你的文件内容,即。 “清空文件”。这是因为在使用开放模式w时,由于您已经在上一次迭代中创建了Python,所以Python隐式地截断了该文件。这种行为被记录在Python 2.7:

[..] 'W'[是]写[到文件](截断如果它已经存在的文件)[..]

使用相反,选项a+附加到文件。 Python的2.7机制的文档还指出这一点:

[..] [使用] '一' 的附加[..]

这意味着此:

...open('out.txt' 'w')...

应该是:

...open('out.txt', 'a')...