【发布时间】:2016-08-29 19:55:56
【问题描述】:
我知道数据应该是正确的。我无法控制数据,我的老板只会告诉我,我需要想办法处理别人的错误。所以请不要告诉我数据不好不是我的问题,因为它是。
任何人,这就是我正在看的:
"Words","email@email.com","","4253","57574","FirstName","","LastName, MD","","","576JFJD","","1971","","Words","Address","SUITE "A"","City","State","Zip","Phone","",""
出于保密原因,数据已被清除。
如您所见,数据包含引号,并且其中一些引用字段中有逗号。所以我不能删除它们。但是“Suite A”“”正在抛弃解析器。引号太多了。 >.
我正在使用 Microsoft.VisualBasic.FileIO 命名空间中的 TextFieldParser 和以下设置:
parser.HasFieldsEnclosedInQuotes = true;
parser.SetDelimiters(",");
parser.TextFieldType = FieldType.Delimited;
错误是
MalformedLineException:无法使用当前解析行 9871 分隔符。
我想以某种方式清理数据以解决此问题,但我不知道该怎么做。或者也许有办法跳过这条线?尽管我怀疑我的上级不会批准我只是跳过我们可能需要的数据。
【问题讨论】:
-
你试过转义问题引用吗?
-
@itsme86 以什么方式逃避它们?
-
跳过坏行,将它们记录到一个文件中,该文件会定期手动更正并重新运行。希望不会有太多糟糕的台词,以至于变得乏味。
-
@itsme86 对不起,我不明白你在说什么。在我的解析代码中的某处放置反斜杠如何解决任何问题?我不提前知道问题报价会在哪里。对不起,如果我误解了你的 cmets
-
@eddie_cat 我的意思是避开行为不端的引号。如果你试图神奇地解析坏数据,你会非常失望。一旦找到它,我会告诉你如何修复它。
标签: c# csv parsing malformed textfieldparser