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时,每条记录后都有一个额外的空白行!
Microsoft Excel
csv
有没有办法使它不放在多余的空白行?
在Python 2中,请outfile使用模式'wb'而不是来打开'w'。该csv.writer写入\r\n直接到文件中。如果你未以二进制模式打开文件,它将写入,\r\r\n因为在Windows 文本模式下会将每个文件\n转换为\r\n。
'wb'
'w'
csv.writer
\r\n
\r\r\n
\n
在Python 3中,所需的语法已更改(请参见下面的文档链接),因此请改用outfile其他参数newline=''(空字符串)打开。
outfile
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)