用fortran从.csv文件中读取数据

用fortran从.csv文件中读取数据,csv,fortran,Csv,Fortran,我正在使用一个软件,该软件将给我一个.csv文件作为输出,我希望借助fortran代码读取该文件。.csv文件的格式如下: balance for 1. Unit: kg N/ha _______________________________________________________________________________________________________________________________________________________________

我正在使用一个软件,该软件将给我一个
.csv
文件作为输出,我希望借助fortran代码读取该文件。
.csv
文件的格式如下:

balance for 1. Unit: kg N/ha
___________________________________________________________________________________________________________________________________________________________________________
,N Pools,,,,,Influx N,,,,,Efflux N
Day,iniSON,iniSIN,endSON,endSIN,dSoilN,Deposit,Fertilizer,Manure,Litter,Sum-In...(**20 parameters**)
___________________________________________________________________________________________________________________________________________________________________________
 1,5973.55,  20.20,5973.51,  20.23,  -0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,  -0.00,   0.00
.........
我有365行这样的值

例子 为了阅读第一行,我使用了以下内容:

program od

implicit none
integer :: res
character(LEN=200) :: head1,head2,head3,head4,head5
open(10, file="Balance_N_1.csv",access='sequential',form="formatted",iostat=res)
open(9,file="out.txt")
read(10,fmt='(A)', iostat=res) head1,head2,head3,head4,head5
write(9,*) head1,head2,head3,head4,head5       

end program od

如何读取后面的数据并将其放入矩阵中,以便我可以使用一些值进行计算

如果我没看错你的问题,你有一个包含365行数据的文件,每行有1个整数(天数)和20个实数,每行上的值用逗号分隔。您可以像这样声明一个数据数组

real, dimension(365,20) :: data_array
和一个整数变量,如

integer :: line_no
然后,一旦读取或跳过文件顶部的文本行,就可以像这样读取数组:

do ix = 1,365
    read(10,*) line_no, data_array(ix,:)
end do
通过对read语句中的格式使用
*
,您使用的是列表定向输入,它既快速又简单,但有一定的局限性。然而,如果您的数据文件是干净的和一致的,这应该足够好了

如果列表定向输入不起作用,您将不得不使用编辑描述符,类似这样的(未测试)


@奥迪,请把它放在问题里,不要评论。
read(10,'(i4,20f9.4)') line_no, data_array(ix,:)