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)
Run Code Online (Sandbox Code Playgroud)
我的输出很奇怪!这段代码有什么问题?
Jos*_*sen 39
我知道问题是询问你的"csv"包实现,但是对于你的信息,有一些选项更加简单 - 例如,numpy.
import numpy as np
np.savetxt('data.csv', (col1_array, col2_array, col3_array), delimiter=',')
Run Code Online (Sandbox Code Playgroud)
(这个答案在6年后发布,为了后人的缘故.)
在另一种情况下,假设您有两列,如下所示:
names = ['Player Name', 'Foo', 'Bar']
scores = ['Score', 250, 500]
Run Code Online (Sandbox Code Playgroud)
你可以像这样保存它:
np.savetxt('scores.csv', [p for p in zip(names, scores)], delimiter=',', fmt='%s')
Run Code Online (Sandbox Code Playgroud)
scores.csv 看起来像这样:
Player Name,Score
Foo,250
Bar,500
Run Code Online (Sandbox Code Playgroud)
dan*_*ben 35
用途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)
Run Code Online (Sandbox Code Playgroud)
您可以关闭文件而不是csv.writer对象,应该是:
f = open(fileName, "wb")
writer = csv.writer(f)
String[] entries = "first*second*third".split("*");
writer.writerows(entries)
f.close()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
199409 次 |
| 最近记录: |