我正在使用 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 文件中的任何其他数据。
最佳答案
与其从您的 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')
关于python - 从 Csv 字符串中删除回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626536/