使用 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 中删除不需要的逗号的主要内容,如果未能解决你的问题,请参考以下文章