CSV损坏了,我该如何解决?

问题描述

| 我正在尝试解析CSV。我想将其放入数据库或仅使用JavaScript进行解析,但是由于语法损坏,任何一种方法均会失败。我的整个CSV文件在这里: https://gist.github.com/1023560 如果您注意到,它会中断双引号中有双引号的地方,并且在插入MysqL时也会失败。第一个中断出现在第13行。它中断,而不是返回完整的中断:
 <a href=\"http://www.facebook.com/pages/Portland-Community-Gardens/139244076118027?v=wall\" target=\"_blank\"><img src=\"/shared/cfm/image.cfm?id=348340\" alt=\"Facebook\" width=\"100\" height=\"31\" /></a>
它返回:
<a href=\"
对于JavaScript,我将只使用Ben Nadel的CSVToArray(): http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm 我的最终目标是将它放入MysqL,以便可以用PHP
json_encode()
回显JSON提要。 我注意到可能有问题的是,双引号既可以在上面的HTML标记中使用,也可以在HTML标记的textNode中使用,所以
\"<span class=\"text\">\"Example\"</span>\"
第一组引号是CSV列,第二组是HTML引号,第三组是文本引号。     

解决方法

        您可能可以欺骗它并使用正则表达式查找:
\"(.*?)\"(?=,|$)
但这有点像乱七八糟的东西(基本上,仅当紧跟着逗号或行尾的情况下才接受结尾引号)。相同的逻辑适用于查找替换。 (同样,所有这些都假设\“ stray \”引用永远不会遵循标准的CSV规则(例如,在逗号之前或之后有逗号/行[开头/结尾])) 我假设您无法控制原始数据,而必须使用已有的数据? 编辑 尽管我仅对一小部分数据进行了尝试,但这似乎是找到“ stray \”引号,您可以在其上使用ѭ5a替换:
(?<!^|\"|,)\"(?!\"|,|$)
    ,        引号与逗号无关紧要。如果逗号是定界符,则值中不能包含逗号。如果您可以使用其他delimter来保存CSV,则可能会获得更好的结果。 使用〜或^之类的字符代替逗号作为分隔符。     ,        假设您在Windows上,或者可以在Windows上执行此操作,请签出Logparser。它是一个免费的命令行实用程序,可以解析许多数据格式,包括CSV,并且可以输出为多种格式,包括SQL。