【发布时间】:2014-05-31 07:05:56
【问题描述】:
我必须解析 (C#) 一个 .CSV 文件,其中包含变量“宽度”和 2 行标题信息(第一行是名称,第二行是单位)。
数据如下:
Example1.CSV:
"timestamp","NAME_1","NAME_2","NAME_3","NAME_4"
"ms","unit_1","unit_2","unit_3","unit_4"
0.01,1.23,4.56,7.89,0.12
0.02,1.23,4.66,7.89,0.11
0.03,1.23,4.76,7.89,0.11
0.04,56.23,4.86,7.89,0.12
Example2.CSV:
"timestamp","NAME_1","NAME_2","NAME_3","NAME_4","NAME_5",...,"NAME_N"
"ms","unit_1","unit_2","unit_3","unit_4","unit_5",...,"unit_N"
0.01,1.23,4.56,7.89,0.12,0.13,...,0.27
0.02,1.23,4.66,7.89,0.12,0.13,...,0.22
0.03,1.23,4.76,7.89,0.11,0.13,...,0.24
0.04,56.23,4.86,7.89,0.12,0.13,...,0.29
N 是表格的“宽度”(值可以达到 128 或更大)。我打算用Filehelpers。
我曾想过使用[FieldOptional()]——但这很不方便,尤其是当“宽度”可变时...
我目前的尝试看起来像
[IgnoreFirst(2)]
[DelimitedRecord(",")]
public sealed class LogData
{
public Double ts;
public Double Field1;
[FieldNullValue(0.0)]
[FieldOptional()]
public Double Field2;
[FieldNullValue(0.0)]
[FieldOptional()]
public Double Field3;
// and so on
}
任何有关“如何解决可变宽度”的帮助 - 以更优雅的方式解决问题 - 非常感谢您!
本
【问题讨论】:
-
阅读完 CSV 文件后,您打算如何使用该模型?
-
模型用于绘制和过滤数据。要么我正在使用来自
LogData[] res = engine.ReadFile(@"..\\..\\testdata.csv");的 Array-Result,要么我正在将其转换为 DataTable - 我打算让性能测试来决定。
标签: c# csv width line filehelpers