gpt4 book ai didi

c# - 如何解析非结构化的 csv 文件

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:29 26 4
gpt4 key购买 nike

我有一个如下所示的 csv 文件,

Processname:;ABC Buying
ID:;31
Message Date:;08-02-2012

Receiver (code):;12345
Object code:


Location (code):;12345
Date;time
2012.02.08;00:00;0;0,00
2012.02.08;00:15;0;0,00
2012.02.08;00:30;0;0,00
2012.02.08;00:45;0;0,00
2012.02.08;01:00;0;0,00
2012.02.08;01:15;0;0,00

上面的消息可能有 1 次或多次出现,所以假设它有 2 次出现,那么 csv 文件看起来像...

Processname:;ABC Buying
ID:;31
Message Date:;08-02-2012

Receiver (code):;12345
Object code:


Location (code):;12345
Date;time
2012.02.08;00:00;0;0,00
2012.02.08;00:15;0;0,00
2012.02.08;00:30;0;0,00
2012.02.08;00:45;0;0,00
2012.02.08;01:00;0;0,00
2012.02.08;01:15;0;0,00
Processname:;ABC Buying
ID:;41
Message Date:;08-02-2012

Receiver (code):;12345
Object code:


Location (code):;12345
Date;time
2012.02.08;00:00;0;17,00
2012.02.08;00:15;0;1,00
2012.02.08;00:30;0;15,00
2012.02.08;00:45;0;0,00
2012.02.08;01:00;0;0,00
2012.02.08;01:15;0;9,00

解析此 csv 文件的最佳方法是什么?

我的方法的伪代码......

// Read the complete file
var lines = File.ReadAllLines(filePath);

// Split the lines at the occurrence of "Processname:;ABC Buying"
var blocks = lines.SplitAtTheOccuranceOf("Processname:;ABC Buying");

// The results will go to
var results = new List<Result>();

// Loop through the collection
foreach(var b in blocks)
{
var result = new Result();

foreach(var l in b.lines)
{

// read the first line and check it contains "Processname" if so, assign the value to result.ProcessName =

// read the 2nd line and check it contains "ID" if so, assign the value to result.ID

// read the 3rd line and check it contains "Object Code" if so, assign the value to result.ObjectCode

// Ignore string.empty

// check for location (code), if so assign the value to result.LocationCode

// Parse all the other rows by spliting with ';' the first part is date, 2nd part is time, 3rd part is value


}
results.Add(result);
}

执行此操作的最佳方法是什么?

最佳答案

首先,我觉得这不像是 CSV 文件。其次,我只是去逐行阅读整个文件。当您看到像“Processname:;ABC Buying”这样的行时,创建一个新对象,这看起来像是您对象的第一行。然后对每一行进行解析并使用该行上的任何信息修改您的对象。当您到达另一个“Processname:;ABC Buying”时,将您一直在处理的对象保存到结果列表中并创建您的新对象。

您的问题没有足够的细节来详细介绍如何解析行等,但以上是我会使用的方法,我怀疑您会变得更好。值得注意的是,这几乎就是您所得到的,除了我不会将文件拆分为对应于每个对象的行之外,我只是在您进行拆分时进行拆分。

关于c# - 如何解析非结构化的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195995/

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