加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在.NET中解析分隔CSV

发布时间:2020-12-16 23:54:05 所属栏目:大数据 来源:网络整理
导读:我有一个文本文件是一个逗号分隔的格式,由“在大多数字段上分隔”。我想把它变成一个我可以枚举的东西(通用集合,例如)。我不能控制文件是输出也不是它用于分隔符的字符。 在这种情况下,字段由逗号分隔,文本字段用“”号标记。我遇到的问题是某些字段在其
我有一个文本文件是一个逗号分隔的格式,由“在大多数字段上分隔”。我想把它变成一个我可以枚举的东西(通用集合,例如)。我不能控制文件是输出也不是它用于分隔符的字符。

在这种情况下,字段由逗号分隔,文本字段用“”号标记。我遇到的问题是某些字段在其中有引号(即“8”托盘),并且偶尔被拾取为下一个领域。在数字字段的情况下,它们在其周围没有引号,但它们以a或 – 符号开始(描述正/负号)。

我在想RegEx,但我的技能不是那么伟大,所以希望有人能想出一些想法,我可以尝试。这个文件中有大约19,000条记录,所以我尽量做到这一点。这里有几个示例数据行:

"00","000000112260   ","Pie Pumpkin                             ","RET","6.99 ","     ","ea ",+0000000006.99000
"00","000000304078   ","Pie Apple caramel                       ","9.99 ",+0000000009.99000
"00","StringValue here","8" Tray of Food                             ",-00000000005.3200

有更多的领域,但你可以得到的照片….

我使用VB.NET,我有一个通用列表设置来接受数据。我试过使用CSVReader,它似乎工作得很好,直到你打一个记录像第三个(在文本字段中的报价)。如果我能以某种方式得到它来处理额外的引号,那么CSVReader选项将会很好。

谢谢!

从 here:
Encoding fileEncoding = GetFileEncoding(csvFile);
// get rid of all doublequotes except those used as field delimiters
string fileContents = File.ReadAllText(csvFile,fileEncoding);
string fixedContents = Regex.Replace(fileContents,@"([^^,rn])""([^$,rn])",@"$1$2");
using (CsvReader csv =
       new CsvReader(new StringReader(fixedContents),true))
{
       // ... parse the CSV

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读