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[10]] += 1
with open('/pythonwork/thefile_subset11.csv', 'w') as outfile:
writer = csv.writer(outfile)
for row in data:
if counter[row[10]] >= 504:
writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)
此代码读取thefile.csv,进行更改并将结果写入thefile_subset1.
但是,当我在Microsoft Excel中打开生成的csv时,每条记录后都会有一个额外的空白行!
有没有办法让它没有多余的空白?
根据其文档,csv.writer默认情况下应使用'\ r \n'作为lineterminator.
import csv
with open("test.csv", "w") as f:
writer = csv.writer(f)
rows = [(0,1,2,3,4),
(-0,-1,-2,-3,-4),
("a","b","c","d","e"),
("A","B","C","D","E")]
print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n")
writer.writerows(rows)
print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n")
Run Code Online (Sandbox Code Playgroud)
这打印
\r\n
\r\n
Run Code Online (Sandbox Code Playgroud)
正如所料.但是,创建的csv文件使用了行终止符'\ r \n\r \n'
0,1,2,3,4
0,-1,-2,-3,-4
a,b,c,d,e
A,B,C,D,E
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我使用csv.writer时出了什么问题?
Python版本:
在Win32上基于Python 2.6.2(r262:71600,2009年4月21日,15:05:37)[MSC v.1500 32位(英特尔)]的ActivePython 2.6.2.2(ActiveState Software Inc.)
在Windows Vista上