【发布时间】:2017-09-01 05:52:10
【问题描述】:
这与another question 没有重复,因为我不想删除这些行。上述帖子中接受的答案与这篇文章大不相同,并且不是旨在维护所有数据。
问题: 来自格式错误的 csv 文件的列数据内的分隔符
尝试过的解决方案: csv 模块、shlex、StringIO(SO 上没有可行的解决方案)
示例数据
分隔符位于第三个数据字段内,由(多个)双引号括起来:
08884624;6/4/2016;Network routing 21,5\"\" 4;8GHz1TB hddQwerty\"\";9999;resell:no;package:1;test
0085658;6/4/2016;Logic 111BLACK.compat: 29,46 cm (11.6\"\")deep: 4;06 cm height: 25;9 cm\"\";9999;resell:no;package:1;test
4235846;6/4/2016;Case Logic. compat: 39,624 cm (15.6\"\") deep: 3;05 cm height: 3 cm\"\";9999;resell:no;package:1;test
400015;6/4/2016;Cable\"\"Easy Cover\"\"\"\";1;5 m 30 Silver\"\";9999;resell:no;package:1;test
9791118;6/4/2016;Network routing 21,5\"\" (2013) 2;7GHz\"\";9999;resell:no;package:1;test
477000;6/4/2016;iGlaze. deep: 9,6 mm (67.378\"\") height: 14;13 cm\"\";9999;resell:no;package:1;test
4024001;6/4/2016;DigitalBOX. tuner: Digital, Power: 20 W., Diag: 7,32 cm (2.88\"\"). Speed 10;100 Mbit/s\"\";9999;resell:no;package:1;test
所需的样本输出
固定长度为 7:
['08884624','6/4/2016', 'Network routing 21,5\" 4,8GHz1TB hddQwerty', '9999', 'resell:no', 'package:1', 'test']
通过csv阅读器解析并不能解决问题(skipinialspace不是问题),shlex没有用,StringIO也没有帮助......
我最初的想法是逐行导入,并替换';'行中逐个元素。 但是导入是个问题,因为它会在每个 ';' 上分裂。
数据来自具有 300.000+ 行的较大文件(并非所有行都有此问题)。 欢迎任何建议。
【问题讨论】:
标签: python python-3.x csv