CSV到文本文件布局

时间:2016-01-07 16:43:15

标签: python csv text

我正在将两列CSV文件输出到文本文件,并将所有内容打印在文本文件中的一行上。像这样:

Product Name Counter({'Descriptions': 1, 'Descriptions':3})

但是我希望它能像这样打印出来:

Product Name Counter({'Descriptions': 1,

                      'Descriptions': 3})

这是我到目前为止的代码:

import csv  
import sys 
from collections import defaultdict 
from collections import Counter 
data = defaultdict(list) 

class dictionary: 
    with open ('practice.csv', 'rb') as f:
        reader = csv.reader(f)
        next(reader, None) 
        for row in reader:
            data[row[2]].append(row[3]) 


    text_file = open("test.txt", "w")
    data_count = Counter()
    for key in data.keys():  
        sys.stdout = text_file 
        print key, Counter(data[key])
    text_file.close()

如何让我的文本文件不能在一行打印出来? 不知道如何让它发挥作用。

2 个答案:

答案 0 :(得分:1)

Counter({'Descriptions': 1, 'Descriptions':3})内容是Counter __str__()函数的输出。当您使用print Counter(stuff)时,会隐含地调用由Counter(stuff)生成的新对象。如果我理解正确,您想重新格式化此输出。

您可以将Counter(data[key])的输出存储在变量中,然后通过在输出中的,的所有位置添加换行来修改该输出:

a = str(Counter(data[key]))
print '\n'.join(a.split(','))

哪个会很难看; - )

然而,你可以自己设计你的ouptut:计数器的键可以通过a.keys()访问,所以你可以添加一个循环:

a = Counter(data[key])
print key, 'Counter({',
for counter_key in a.keys():
    print counter_key + ': ' + a[counter_key] + ','
print '})'

迭代计数器的内容,并逐行输出计数器中的键值组合。

编辑: 您的代码的第二部分将如下所示:

text_file = open("test.txt", "w")
for key in data.keys():
    text_file.writelines(key + ' Counter({')
    counted = Counter(data[key])
    for counter_key in counted.keys():
        text_file.writelines('  ' + counter_key + ': ' + counted[counter_key] + '\n')
    text_file.writelines('})\n')
text_file.close()

注意:可以使用

迭代计数器中的键/值对
for counter_key, counter_value in counted.items():

答案 1 :(得分:0)

您需要在\ n

的每行末尾添加一个新行

您是否尝试使用data.writer添加行?

import csv
with open('practice.csv', 'wb') as f:
    data = csv.writer(f, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    data.writerow(['Spam'] * 5 + ['Baked Beans'])
    data.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

改编自示例:https://docs.python.org/2/library/csv.html