在字段中使用逗号分析CSV

时间:2011-06-16 19:04:00

标签: excel csv

我有一个csv文件,其中包含非封闭字段内的逗号。遗憾的是,我必须解析此文件,并且无法将其替换为格式正确的文件。

我真的不知道从哪里开始。

4 个答案:

答案 0 :(得分:2)

行。我所看到的是以下内容:您有大约8,000行,其中基本上存在CSV语法错误。您可以手动确定它们是什么,但手动修复8,000个条目有点多。

显而易见的第一种方法是尝试了解您可以手动找出哪些列存在此问题。如果您可以定义规则,那么您就可以开展业务。如果它足够简单,你可以编写一个小的文本编辑器宏来浏览文件并为你完成。如果您的文本编辑器不支持宏。使用awk。如果您使用的是Windows,但没有awk,那么go get it

如果它过于复杂,解决您的实际问题。修复生成此CSV文件的任何内容以正确生成它。如果是其他人无法访问的代码,请告诉他们修复它。 “你正在生成8,000个不可解决的条目”在我的书中似乎是一个非常好的论据。迟早他们可能会生成这个文件的新版本供你处理,所以这真的是正确的事情。

答案 1 :(得分:1)

除了在文本编辑器中手动分析记录之外,您可能无法做任何事情。如果没有可辨别的方法将它们与数据中的有效逗号区分开来,则逗号分隔符基本上是无用的。

如果您可以从创建错误文件的人那里获得一个更清晰的文件,那么这可能远比尝试修复您所获得的文件麻烦得多。

答案 2 :(得分:0)

你可以运行一个excel宏来暂时将逗号重新格式化为其他字符(假设是$,而不是你文件中的内容),然后一旦你解析了文件,你就可以通过一些代码来运行结果了将字符重新格式化为原始逗号。

编辑:我假设你有权访问原始文件,因为你在这里标记了excel吗?

答案 3 :(得分:0)

我认为你能想到的最好是80%自动,这意味着你将做超过1000手动最佳案例。你只需要聪明地了解那里的数据。阅读每一行并计算逗号。如果数量合适,请将其写入新文件。如果它太多,请将其发送到异常处理程序。

从您对数据的绝对了解开始。第一列是TimeStamp吗?如果你知道的话,你可以从“应该有18个时的20个逗号”到“应该有17个时有19个逗号”。我知道这并没有完全提升你的精神,但它的进步。那里有一个位置,比如植物名称吗?也许你可以从好数据开发一个列表并在坏数据中搜索它。如果第7列应该是工厂名称,请浏览工厂名称列表并查看其中是否存在其中一个。如果是这样,请计算它与开头之间以及之间和结尾之间的逗号(或您已建立的另一个好的逗号位置)。

如果你有一些独特的数据,你可以正则表达式在字符串中找到它的位置,然后再次计算前后的逗号,看它是否应该在哪里。就像你有一个Lat / Long读数或零件号的格式为99A99-999。

如果您可以发布五到十行好的数据,也许有人可以建议更具体的方法来识别列及其位置。

祝你好运。