使用 Python 将结果保存到 csv 文件

新手上路,请多包涵
import csv

with open('test.csv', 'rb') as f:
  data = list(csv.reader(f))

import collections
counter = collections.defaultdict(int)
for row in data:
    counter[row[1]] += 1
for row in data:
    if counter[row[1]] >= 4:
      writer = csv.writer(open("test1.csv", "wb"))
      writer.writerows(row)

我得到奇怪的输出!这段代码有什么问题?

原文由 Alex Gordon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 527
2 个回答

使用 csv.writer

 import csv

with open('thefile.csv', 'rb') as f:
  data = list(csv.reader(f))

import collections
counter = collections.defaultdict(int)
for row in data:
    counter[row[0]] += 1

writer = csv.writer(open("/path/to/my/csv/file", 'w'))
for row in data:
    if counter[row[0]] >= 4:
        writer.writerow(row)

原文由 danben 发布,翻译遵循 CC BY-SA 2.5 许可协议

我知道问题是询问您的“csv”包实现,但为了您的信息,有一些更简单的选项——例如 numpy。

 import numpy as np
np.savetxt('data.csv', (col1_array, col2_array, col3_array), delimiter=',')


(为了后代,这个答案在 6 年后发布。)

在与您所询问的类似的不同情况下,假设您有两列:

 names = ['Player Name', 'Foo', 'Bar']
scores = ['Score', 250, 500]

你可以这样保存它:

 np.savetxt('scores.csv', [p for p in zip(names, scores)], delimiter=',', fmt='%s')

scores.csv 看起来像这样:

 Player Name,Score
Foo,250
Bar,500

原文由 Joe Hansen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏