我有一个 .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();
答案 0 :(得分:3)
您的文件res1.csv
(假设它只包含double
个值)有一些语法错误,例如
1881081,9; 6,315177; 352,499964;的 01,06,1974 强>; 350645
01,06,1974
的含义是什么?我们应该忽略逗号(将它们视为某种千位分隔符)?或者它是日期(1 June 1974
)?另一种可能性是,
是派生者,因此我们有三个单独的值:1
,6
和{{1 }}
如果你想忽略逗号(因此 01,06,1974 将 1061974.0 ),只需指定{{1}解析时:
1974
如果您想将InvariantCulture
视为派生者(因此 01,06,1974 将 [1.0,6.0,1974.0] )
double[][] termom = File.ReadLines(fD.FileName)
.Select(l => l.Split(';')
.Select(n => double.Parse(n, CultureInfo.InvariantCulture))
.ToArray())
.ToArray();