首页 > 解决方案 > 用逗号分割 CSV 文件,但逗号和双引号都可能出现在列内

问题描述

我在尝试导入 SQL 数据库的非常旧系统的数据集时遇到问题。从理论上讲,它是一个逗号分隔的 CSV 文件,但是,有多个“陷阱”我无法完全解决。如果一列包含空格、双引号或逗号,它将用双引号括起来。

下面是一些列和行的示例(总共有 54 列,但大多数只是数字,易于处理);

129.00,"Some "Thing",55456 <-- 没问题处理

12.95,"Some Text 0,50",5131<--- 双引号内的逗号被可能出现在数据集中其他地方的数字包围

0.00,"Some Text" with ending",52787<-- 双引号内的双引号

0.00,"Some. Text 2,-",52787 <-- 双引号内的逗号

10.99,"Some Text 0,",00 <-- 逗号、双引号和逗号。

5,78,"Some Text",-85.00<- 文本后跟负值

我已经调整了我在这个论坛上找到的两个常用的正则表达式,但我无法让它们中的任何一个在所有情况下都有效;

,(?!-"|\d{2}")(?=(?:[^"]*")*[^"]*$) <-- 适用于除逗号、双引号和逗号之外的所有内容。

,(?!-")(?=(?:[^"]*")*[^"]*$)<-- 适用于除逗号之外的所有内容,双引号内可能出现在数据集中其他地方的数字包围

这里的一些帮助将非常有用!:)

标签: regexcsv

解决方案


推荐阅读