Python 有没有办法从csv.DictReader读取的打开文件中删除/替换回车符?
我有一些带有分隔字段的大文件,这些字段有时包含回车(“Python 有没有办法从csv.DictReader读取的打开文件中删除/替换回车符?,python,csv,carriage-return,Python,Csv,Carriage Return,我有一些带有分隔字段的大文件,这些字段有时包含回车(“\r”)。我想使用csv库中的DictReader(甚至reader),但显然lineterminator参数没有任何作用,回车符和换行符都硬编码到系统中() 为了保存数据,我希望至少能够替换回车符(即使使用类似'\\r')的内容),以便将文件存储到数据库中并检索原始文本(如果需要向用户显示新行,则类似于'\\r'的内容可以轻松转换为新行) 有些文件非常大,我不想将整个文件读入内存 文件的编码为“UTF-8”或“latin-1”您可以使用脚本
\r
”)。我想使用csv
库中的DictReader
(甚至reader
),但显然lineterminator
参数没有任何作用,回车符和换行符都硬编码到系统中()
为了保存数据,我希望至少能够替换回车符(即使使用类似'\\r'
)的内容),以便将文件存储到数据库中并检索原始文本(如果需要向用户显示新行,则类似于'\\r'
的内容可以轻松转换为新行)
有些文件非常大,我不想将整个文件读入内存
文件的编码为“UTF-8”或“latin-1”您可以使用脚本从文件中删除任何空行,如下所示:
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)
或者,如果您知道有效行必须具有say5
列,则可以使用:
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
您可以使用脚本从文件中删除任何空行,如下所示:
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)
或者,如果您知道有效行必须具有say5
列,则可以使用:
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
请添加CSV文件外观的小示例。请添加CSV文件外观的小示例。