Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法从csv.DictReader读取的打开文件中删除/替换回车符?_Python_Csv_Carriage Return - Fatal编程技术网

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)
或者,如果您知道有效行必须具有say
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

您可以使用脚本从文件中删除任何空行,如下所示:

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)
或者,如果您知道有效行必须具有say
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

请添加CSV文件外观的小示例。请添加CSV文件外观的小示例。