python - 从 Csv 字符串中删除回车

标签 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 文件中的任何其他数据。

最佳答案

与其从您的 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/

相关文章:

python - 我应该如何读取和使用 ~40GB csv 中的数据进行时间序列预测?

linux - 如何使用 bash/awk 在列中显示我的脚本的输出?

python - 使用具有 IAM 角色的 boto3 连接到 Amazon S3

Python:如何获取调用函数的文件的绝对路径?

python - 从数组中删除/检索元素

xml - 如何在 XML 输出中嵌入 CSV 文件

python - 使用另一个数据帧中的值调用函数

python - 在 Django 模型中使用 Trigram (gin_trgm_ops) 创建 Gin 索引

javascript - 在 Bull 队列和数据库触发器之间进行选择

SQL 计数器失败