gpt4 book ai didi

.net - 在 .NET 中解析分隔的 CSV

转载 作者:行者123 更新时间:2023-12-03 10:44:06 28 4
gpt4 key购买 nike

我有一个逗号分隔格式的文本文件,由 " 分隔。在大多数领域。我试图把它变成我可以枚举的东西(例如,通用集合)。我无法控制文件的输出方式,也无法控制它用于分隔符的字符。

在这种情况下,字段由逗号分隔,文本字段包含在 " 中。分数。我遇到的问题是某些字段中有引号(即 8 " Tray),并且不小心被选为下一个字段。在数字字段的情况下,它们周围没有引号,但它们确实以 + 或 - 符号开头(表示正/负数)。

我正在考虑使用 RegEx,但我的技能不是那么好,所以希望有人能提出一些我可以尝试的想法。该文件中大约有 19,000 条记录,因此我正在努力尽可能高效地完成它。以下是几个示例数据行:

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

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

我正在使用 VB.NET 并且我有一个通用列表设置来接受数据。我试过使用 CSVReader并且它似乎运行良好,直到您达到第 3 个记录(在文本字段中带有引号)。如果我能以某种方式让它处理额外的引号,那么 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, @"([^\^,\r\n])""([^$,\r\n])", @"$1$2");
using (CsvReader csv =
new CsvReader(new StringReader(fixedContents), true))
{
// ... parse the CSV

关于.net - 在 .NET 中解析分隔的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/736629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com