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)
此代码读取thefile.csv、进行更改并将结果写入thefile_subset1.
thefile.csv
thefile_subset1
但是,当我在 Microsoft Excel 中打开生成的 csv 时,每条记录后都会有一个额外的空白行!
有没有办法让它不放一个额外的空行?
在 Python 2outfile中,使用模式打开'wb'而不是'w'. csv.writer直接写入\r\n文件。如果您不以 二进制 模式打开文件,它将写入\r\r\n,因为在 Windows 文本 模式下会将每个文件\n转换为\r\n.
outfile
'wb'
'w'
csv.writer
\r\n
\r\r\n
\n
在 Python 3 中,所需的语法发生了变化,csv模块现在可以使用 text mode 'w',但还需要newline=''(empty string) 参数来抑制 Windows 行转换(请参阅下面的文档链接)。
csv
newline=''
# Python 2 with open('/pythonwork/thefile_subset11.csv', 'wb') as outfile: writer = csv.writer(outfile) # Python 3 with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile: writer = csv.writer(outfile)