生成CSV时,防止CSV文件中的逗号定义新列

时间:2015-03-09 14:06:31

标签: csv

示例$ this-> generating_csv =" 12,000"。",";

而不是在一列中插入12,000,第一列插入12,第二列插入000。

我该如何解决这个问题(php)

1 个答案:

答案 0 :(得分:0)

如果您引用字段,这就是读取程序的错误。

但看起来你没有引用这些字段。

RFC4180允许CSV文件中的一行,如:

"A","12,000","C" 

是3个字段,而不是4个字段。请注意,这些字段是引用的。

A,12,000,C

是4个字段,字段1为A,字段2为12,字段3为000,字段4为C。阅读程序可以'读这个任何其他的方式......它无法读懂思想。

但是许多程序无法处理字段中带逗号的CSV文件,即使字段被正确引用也可能包含逗号。更令人困惑的是,许多程序可以设置为以逗号分割而不是根据RFC4180读取。在逗号上拆分不足以读取完整的RFC4180 CSV格式。

话虽如此,这里还有另一个问题:12,000不是Python,Javascript,R和许多语言中的有效数字,所以即使程序使用了一个好的RFC4180阅读器(例如{{在python中的1}}模块,将csv更改为数字仍然会失败。

所以你可能想要删除引用字段中数字之间的逗号。

在您的情况下,因为您只是在PHP中生成CSV文件 试试这两种方法:

备选方案A:引用字段

12,000

这将导致$this->generating_csv = '"12,000"'.','.'"field2"' 出现在输出

备选方案B:生成没有额外逗号的字段:

"

如果您已经在引用字段中有多个带逗号的CSV文件,并且读取程序无法正确读取它们,则可以使用正则表达式搜索/替换以清除逗号。在Python中,以下内容将清除csv文件中的逗号:

$this->generating_csv = "12000".","."field2"