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

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

公园街5号楼

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

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

谢谢。

【问题讨论】:

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

标签: python csv


【解决方案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 的回答,这是正确的。

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 2017-01-05
      • 2023-01-26
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 2015-04-17
      相关资源
      最近更新 更多