有没有办法从csv.DictReader读取的打开文件中删除/替换回车?

时间:2018-01-12 19:54:51

标签: python csv carriage-return

我有一些带有分隔字段的大文件,有时包含回车符('\r')。我想使用DictReader库中的reader(或甚至csv),但显然lineterminator参数没有做任何事情,并且回车和换行都是硬编码到系统中(source)。

为了保存数据,我希望至少能够替换回车(即使使用类似'\\r'之类的东西),这样文件就可以存储到数据库中并拥有原始数据检索到的文本(如果需要向用户显示,可以很容易地将'\\r'转换为换行符。)

有些文件非常大,我不想将整个文件读入内存。

文件的编码是'UTF-8'或'latin-1'

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
相关问题