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();
您的文件 res1.csv
(前提是它应该只包含 double
值)有一些 语法错误,例如
1881081,9;6,315177;352,499964;01,06,1974;350,645
01,06,1974
是什么意思?我们应该忽略 逗号(把它们当作某种千位分隔符)吗?还是 日期 (1 June 1974
)?另一种可能性是 ,
是一个 deriver,因此我们有 三个 个单独的值: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();
我有一个 .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();
您的文件 res1.csv
(前提是它应该只包含 double
值)有一些 语法错误,例如
1881081,9;6,315177;352,499964;01,06,1974;350,645
01,06,1974
是什么意思?我们应该忽略 逗号(把它们当作某种千位分隔符)吗?还是 日期 (1 June 1974
)?另一种可能性是 ,
是一个 deriver,因此我们有 三个 个单独的值: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();