正则表达式将引号添加到不带引号的 CSV 列

Posted

技术标签:

【中文标题】正则表达式将引号添加到不带引号的 CSV 列【英文标题】:Regular Expression to add quotes to CSV columns without quotes 【发布时间】:2014-11-09 03:25:28 【问题描述】:

我有 CSV 格式的数据,我无法更改格式。

有些列有双引号,有些没有引号。

唯一的问题,也是我首先需要添加双引号的原因是,某些列的数字带有逗号,但它们周围没有双引号 - 这导致 CSV 处理中断。

有没有办法区分正则表达式中的这两种逗号?

这是当前数据中示例行的一部分:

"NasdaqNM","-0.06 - -0.27%",19.00,25.75,1.04,1.28,0.50,21.75,17.67,1.97,6.652,3.40,1.77,95.2M,21.7642,22.8678,6,402," ====== "

如您所见,在应该是一个数字的 6,402 处,它将一分为二。

所以我想我的问题是 - 有没有办法分析 CSV 中的逗号并为正确的列生成双引号?

我正在使用 php

【问题讨论】:

你怎么知道6,402应该是一个数字? 【参考方案1】:

简单的答案。不。 无法区分这两种情况。

简单测验: 这里有多少个数字:1,2,3,4,5

你不知道吗?所以你的电脑也无法做到这一点。

您需要用逗号引用包含数据,或者用逗号交换点。

如果您知道特定的 2 列是一个数字,您可以尝试在解析后合并它们。

【讨论】:

以上是关于正则表达式将引号添加到不带引号的 CSV 列的主要内容,如果未能解决你的问题,请参考以下文章

用于 CSV 拆分的正则表达式,包括多个双引号

正则表达式捕获引号内和带/不带空格的数字

用于解析 CSV 的正则表达式

将 MySQL 导出为 CSV,一些列带引号,一些不带引号

正则表达式删除由双引号划定的 CSV 字段中的双引号

正则表达式在csv中找到缺少的双引号