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