我有一些带有分隔字段的大文件,有时包含回车符('\r
')。我想使用DictReader
库中的reader
(或甚至csv
),但显然lineterminator
参数没有做任何事情,并且回车和换行都是硬编码到系统中(source)。
为了保存数据,我希望至少能够替换回车(即使使用类似'\\r'
之类的东西),这样文件就可以存储到数据库中并拥有原始数据检索到的文本(如果需要向用户显示,可以很容易地将'\\r'
转换为换行符。)
有些文件非常大,我不想将整个文件读入内存。
文件的编码是'UTF-8'或'latin-1'
答案 0 :(得分:2)
您可以使用脚本从文件中删除任何空行,如下所示:
import csv
with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output:
csv_input = csv.reader(f_input)
csv_output = csv.writer(f_output)
for row in csv_input:
if row:
csv_output.writerow(row)
或者,如果您知道有效行必须包含5
列,您可以使用:
if len(row) == 5:
这假设您使用的是Python 2.x.对于Python 3.x,您需要:
with open('input.csv', 'r', newline='') as f_input, open('output.csv', 'w', newline='') as f_output:
例如,如果input.csv
是:
a,b,c
1,2,3
4,5,6
7,8,9
10,11,12
13,14,15
output.csv
文件将变为:
a,b,c
1,2,3
4,5,6
7,8,9
10,11,12
13,14,15