从Csv字符串

时间:2017-10-08 00:49:56

标签: python postgresql csv

我正在使用pandas生成一个csv字符串: df.to_csv(sep=',', encoding='utf-8', index=False, header=False)

我将在postgres中加载csv,如下所示。

    COPY table_name FROM STDIN (FORMAT CSV,
    DELIMITER ',',
    HEADER FALSE,
    NULL '',
    ENCODING 'utf-8');

当csv中存在回车符时,这种情况偶尔会失败,我使用csv_str.replace('\r', '')删除了回车符。但是我不确定这种方法是否可能会改变csv中的某些现有数据。

是否有更可靠的方法来删除任何回车?我没有丢失有关回车的信息,但我希望尽可能多地保存存储在csv文件中的任何其他数据。

1 个答案:

答案 0 :(得分:2)

不要从CSV文件中删除回车符,而是确保引用包含它们的那些字段。一种方法是引用所有字段:

import csv
import pandas as pd

df.to_csv(sep=',', encoding='utf-8', index=False, header=False, quoting=csv.QUOTE_ALL)

或者,您可以使用quoting=csv.QUOTE_NONNUMERIC仅引用可能包含\r的字段。

另一种方法是将行终止符设置为\r\n(或仅\r),这将间接导致包含\r的任何字段被引用。这可能是首选,因为只引用那些需要它的单个“单元格”:

df.to_csv(sep=',', encoding='utf-8', index=False, header=False, line_terminator='\r\n')