Python CSV 模块 - 引号丢失

2024-04-20

我有一个 CSV 文件,其中包含这样的数据

15,"I",2,41301888,"BYRNESS RAW","","BYRNESS VILLAGE","NORTHUMBERLAND","ENG"
11,"I",3,41350101,2,2935,2,2008-01-09,1,8,0,2003-02-01,,2009-12-22,2003-02-11,377016.00,601912.00,377105.00,602354.00,10

我正在阅读这篇文章,然后将不同的行写入不同的 CSV 文件。

但是,在原始数据中,非数字字段周围有引号,因为其中一些字段内包含逗号。

我无法保留报价。

我研究了很多并发现quoting=csv.QUOTE_NONNUMERIC但是现在这会导致每个字段周围都有引号,我不知道为什么?

如果我尝试其他引用选项之一(例如 MINIMAL),我最终会收到一条有关日期值 2008-01-09 的错误消息,而不是浮点数。

我尝试创建一种方言,在 csv 读取器和写入器上添加引用,但我尝试过的任何结果都无法与原始数据完全匹配。

任何人都遇到过同样的问题并找到了解决方案。


写作时,quoting=csv.QUOTE_NONNUMERIC保持值不被引用,只要它们是numbers, IE。如果他们的类型是int or float(例如),这意味着它将写出您所期望的内容。

您的问题可能是,在阅读时,csv.reader会将它读取的每一行变成list of strings(如果您足够仔细地阅读文档,您会发现读者确实not执行自动数据类型转换!

如果您不执行任何类型的转换看完之后,那么当你写的时候,你最终会得到引号中的所有内容......因为你写的所有内容都是一个字符串。

编辑:当然,日期字段将被引用,因为它们是not数字,这意味着您无法使用标准获得确切的预期行为csv.writer.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python CSV 模块 - 引号丢失 的相关文章

随机推荐