c# csv文件到数组

c# csvfile to array

我有一个 .csv 文件,其中包含许多行和 3 列(由“;”分隔)和数字,我将其转换为 double array[][] 现在我添加了更多的数字列并得到一个错误:

FormatException -> Input string was not in a correct format

我找不到问题,因为文件是相同的(但多了 2 列) 我的代码:

OpenFileDialog fD = new OpenFileDialog();
fD.Title = "select";
fD.Filter = "csv files|*.csv";
fD.InitialDirectory = @"path here";
if (fD.ShowDialog() == DialogResult.OK)
    MessageBox.Show(fD.FileName.ToString());

double[][] termom = File.ReadLines(fD.FileName)
    .Select(l => l.Split(';')
        .Select(n => double.Parse(n))
        .ToArray())
    .ToArray();

编辑 感谢您的编辑帮助 - 不太习惯这里的命令。希望我正确添加了文件 original improved

您的文件 res1.csv(前提是它应该只包含 double 值)有一些 语法错误,例如

1881081,9;6,315177;352,499964;01,06,1974;350,645

01,06,1974是什么意思?我们应该忽略 逗号(把它们当作某种千位分隔符)吗?还是 日期 (1 June 1974)?另一种可能性是 , 是一个 deriver,因此我们有 三个 个单独的值:161974

如果您想忽略逗号(因此01,06,1974将是1061974.0), 只需在解析时指定 InvariantCulture:

double[][] termom = File.ReadLines(fD.FileName)
  .Select(l => l.Split(';')
    .Select(n => double.Parse(n, CultureInfo.InvariantCulture))
    .ToArray())
  .ToArray();

如果您想将 , 视为派生者(因此 01,06,1974 将是 [1.0, 6.0, 1974.0] )

double[][] termom = File.ReadLines(fD.FileName)
  .Select(l => l.Split(';', ',') // ',' is a deriver as well as ';'
    .Select(n => double.Parse(n, CultureInfo.InvariantCulture))
    .ToArray())
  .ToArray();