regex - 用逗号分割 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}")(?=(?:[^"]*")*[^"]*$)
<-- 适用于除逗号、双引号和逗号之外的所有内容。
,(?!-")(?=(?:[^"]*")*[^"]*$)
<-- 适用于除逗号之外的所有内容,双引号内可能出现在数据集中其他地方的数字包围
这里的一些帮助将非常有用!:)
解决方案
推荐阅读
- css - 如何与css一起改变文本和svg图片的颜色?
- python - 如何通过任务ID检查任务状态?
- python - spaCy 只能链接命名实体吗?
- twilio - Twilio Flex 中的保持超时 - 流
- django - 使用 Django Celery 向远程 API 发送批量请求的更好方法?
- angular - 在谷歌云中部署后,Angular 应用程序无法调用 Flask 服务器 API
- python - 使用 sqlalchemy 和 pyodbc 的 SQL Server 2016 连接不返回任何表
- android - Firebase/Android - 检查数据库中的数据是否与同一数据库中的其他数据匹配
- airflow - 将 OracleOperator 的输出发送到 Airflow 中的另一个任务
- c# - 使用具有两个视图的 mvvm?