使用 Python 从 CSV 中删除不需要的逗号

Posted

技术标签:

【中文标题】使用 Python 从 CSV 中删除不需要的逗号【英文标题】:Remove unwanted commas from CSV using Python 【发布时间】:2022-01-23 10:32:39 【问题描述】:

我需要一些帮助,我有一个包含地址字段的 CSV 文件,无论谁将数据输入原始数据库,都使用逗号分隔地址的不同部分 - 例如:

公园街5号楼

当我尝试使用 CSV 文件时,它会将这个条目视为两个单独的字段,而实际上它是一个字段。我使用 Python 将逗号从逗号之间的位置去掉,因为很容易将它们与实际应该存在的逗号区分开来,但是这个问题让我很难过。

如有任何帮助,我们将不胜感激。

谢谢。

【问题讨论】:

问题不在于它在数据库中的存储方式,而在于CSV文件是如何生成的。如果您仍然可以访问数据库,请使用 python 的内置 CSV 模块重新生成 CSV 文件。然后它将具有正确转义的字符串序列。 请显示您尝试读取的数据的实际样本(以便我们判断是否以任何方式引用),并说明您使用什么技术来“使用”CSV 文件. 处理此问题的正确方法是将字符串括在双引号中。 CSV 阅读器将带引号的字符串中的逗号视为字符串的一部分。 你说的是这些吗? en.wiktionary.org/wiki/inverted_comma 每条记录的地址格式都一样吗?意思是,每一行是否包含相同数量的“不需要的”逗号?如果是,您可以在几行中通过拆分解决此问题,用双引号将整个地址字段括起来 - 或者简单地编辑标题行以使用多个字段作为地址。 【参考方案1】:

您可以使用Python's CSV reader 定义分隔符和引号字符。例如:

使用此 CSV:

1,`Flat 5, Park Street`

还有这个 Python:

import csv

with open('14144315.csv', 'rb') as csvfile:
    rowreader = csv.reader(csvfile, delimiter=',', quotechar='`')
    for row in rowreader:
        print row

你会看到这个输出:

['1', 'Flat 5, Park Street']

这将使用逗号分隔值,但引号中的逗号使用引号

【讨论】:

【参考方案2】:

CSV 文件未正确生成。 CSV 文件应该有某种形式的文本转义,通常使用双引号:

1,John Doe,"City, State, Country",12345

某些 CSV 导出对所有字段执行此操作(这是从 Excel/LibreOffice 导出时的一个选项),但必须转义不明确的字段(例如包含逗号的字段)。

手动修复此问题或正确重新生成 CSV。当然,这不能以编程方式解决。

编辑:我刚刚注意到一些关于“反逗号”用于转义的信息 - 如果是这种情况,请参阅 Jason Sperske 的回答,这是正确的。

【讨论】:

以上是关于使用 Python 从 CSV 中删除不需要的逗号的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python删除csv文件中逗号前后的空格?

Python解析csv文件 - 用冒号替换逗号

从 .CSV 文件的数值中删除双引号和逗号

如何从 Python 中的数据中删除多余的逗号

从 CSV 导入列并替换逗号

删除 CSV 文件中双引号之间的逗号