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


  FormatException->输入字符串的格式不正确


我找不到什么错了,因为文件相同(但是还有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; 2015年1月6日; 350,645


01,06,1974是什么意思?我们是否应该忽略逗号(将其视为某种千位分隔符)?还是日期(1 June 1974)?还有一种可能是,是派生程序,因此我们有三个单独的值: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();

10-02 13:38