【发布时间】:2015-12-21 07:14:09
【问题描述】:
我当前的 csv 文件如下所示:
field1, field1, field3, field4, field5, field6
111, John, Doctor, 1A-jrd, ,"Tuft St
Peoria, IL 54345
(12.11111, 43.5555)"
121, Bob, Teacher, 2A-abcd, 345, "Moore Ave
Boston, MA 23123
(67.11111,- 49.5567)"
131, Kyle, Engineer, 3A-bhbh, , "Barnes St
San Francisco, CA 34654
(65.11111, 55.985432)"
在某些情况下 field5 没有值。此外,field6 在引号内并且有换行符。例如:第一行数据的field6实际上是
"Tuft St
Peoria, IL 54345
(12.11111, 43.5575)"
我需要编写一个脚本来解析这个文件并返回 12.111, 43.557 来代替 field6 的当前值,这样最终的 csv 文件就会看起来像
field1, field1, field3, field4, field5, field6
111, John, Doctor, 1A-jrd, , "12.111, 43.555"
121, Bob, Teacher, 2A-abcd, 345, "67.111,- 49.556"
131, Kyle, Engineer, 3A-bhbh, , "65.111, 55.985"
我看过 cvsparser,但我的理解是,它只有在整个数据行在一行上且没有任何换行符的情况下才有效。此外,我不能简单地使用逗号来分割行,因为其中有多个逗号的地址。关于如何解析这个 csv 文件的任何建议?
【问题讨论】:
-
什么语言?在 Perl 中,我会考虑使用 Text::CSV 模块。
-
你的CSV文件中的字段真的没有被引用吗?这使得准确解析非常很困难,如果不是不可能的话。
-
@Sobrique:任何语言都可以。
-
@rici:只有包含多个逗号的字段才有引号,例如 field6。