gpt4 book ai didi

csv - 如何在Fortran中读取我的csv文件?

转载 作者:行者123 更新时间:2023-12-03 21:20:09 26 4
gpt4 key购买 nike

如何在Fortran中读取以下数据。我无法读取此文件中的数据。我收到以下错误

severe (64): input conversion error, unit 18

Image PC Routine Line Source
a.out 00000000004734AA Unknown Unknown Unknown


这是我的代码:

        program dataread
implicit none
character*15 ::head_1,head_2,head_3,head_4,head_5,head_6
character*15:: B,C, head_7,head_8,head_9,head_10
real,dimension(1:71385,1:10)::A
integer::i,j

open(unit=18, file='Tws15thHourlyData.csv' , status='old',
& access ='sequential',form='formatted')!,recl=71781*10)

read(18,*) head_1,head_2,head_3,head_4,head_5,head_6,
& head_7,head_8, head_9,head_10


do i=2,71385
read(18,300)(A(i,j),j=1,10)
300 format(I5,A17,2F9.6,A8,5F4.1)
end do

print*, head_1,head_2,head_3,head_4,head_5,head_6,
& head_7,head_8, head_9,head_10
do i=2,71385
read(18,300)(A(i,j),j=1,10)
300 format(I5,A17,2F9.6,A8,5F4.1)
end do

print*, head_1,head_2,head_3,head_4,head_5,head_6,
& head_7,head_8, head_9,head_10


do i=2,71385
print*, (A(i,j),j=1,10)
end do
close(18)
open(unit=28,file='14data.txt')
write(28, 100),((A(i,j),j=1,10),i=2,71385)
100 format(10(71385(I4,A15,2F9.6,A8,5F4.1,2x),/))
end program


我正在尝试读取的数据

TWSCODE,DISTRICT,LATITUDE_DD,LONGITUDE_DD,RECORDED_DATE,HOUR,TEMPERATURE,HUMIDITY,WIND_SPEED,WIND_DIRECTION

109,KALABURAGI,17.463587,77.42,14-08-17,0,26.2,79.4,0,168
109,KALABURAGI,17.463587,77.42,14-08-17,0,26.2,80,0,25

109,KALABURAGI,17.463587,77.42,14-08-17,0,26.1,80.4,0,25
109,KALABURAGI,17.463587,77.42,14-08-17,0,25.9,81,0,25

109,KALABURAGI,17.463587,77.42,14-08-17,1,25.8,81.7,0,25
109,KALABURAGI,17.463587,77.42,14-08-17,1,25.9,82,0,287
109,KALABURAGI,17.463587,77.42,14-08-17,1,25.9,82.5,0,299
109,KALABURAGI,17.463587,77.42,14-08-17,1,25.8,82.8,0,286
109,KALABURAGI,17.463587,77.42,14-08-17,2,25.6,83.5,0,254
109,KALABURAGI,17.463587,77.42,14-08-17,2,25.6,83.9,0,292
109,KALABURAGI,17.463587,77.42,14-08-17,2,25.6,84,0,299
109,KALABURAGI,17.463587,77.42,14-08-17,2,25.6,84.2,0,309
109,KALABURAGI,17.463587,77.42,14-08-17,3,25.5,84.4,0,327
109,KALABURAGI,17.463587,77.42,14-08-17,3,25.4,84.8,0,315
109,KALABURAGI,17.463587,77.42,14-08-17,3,25.3,84.8,0,305
109,KALABURAGI,17.463587,77.42,14-08-17,3,25.2,84.8,0,306
109,KALABURAGI,17.463587,77.42,14-08-17,4,25.2,84.9,0,305
109,KALABURAGI,17.463587,77.42,14-08-17,4,25.2,85.1,0,306
109,KALABURAGI,17.463587,77.42,14-08-17,4,25.1,85.3,0,305
109,KALABURAGI,17.463587,77.42,14-08-17,4,25.1,85.4,0,305
109,KALABURAGI,17.463587,77.42,14-08-17,5,25.1,85.7,0,308

最佳答案

我不喜欢@agentp的回答,并且完全不同意这样的评论,即应该将行读为字符串,并且对解析它感到困惑。

所以我写了这个...

正如我在上面的注释中指出的那样,OP代码中的一个错误(可能是唯一的错误)正在使用此语句,并设置格式

       read(18,300)(A(i,j),j=1,10)
300 format(I5,A17,2F9.6,A8,5F4.1)


试图将数字和字符串的混合读取到 reals数组中。那永远不会顺利。退后一步,思考一下问题。输入文件包含一些结构良好的数据,那么为什么不定义一个存储它的结构呢?首先是一个类型定义,例如:

  TYPE :: met_record
INTEGER :: TWSCODE
CHARACTER(len=32) :: DISTRICT
REAL :: LATITUDE_DD
REAL :: LONGITUDE_DD
CHARACTER(len=8) :: RECORDED_DATE
INTEGER :: HOUR
REAL :: TEMPERATURE
REAL :: HUMIDITY
REAL :: WIND_SPEED
REAL :: WIND_DIRECTION
END TYPE met_record


然后是那些

TYPE(met_record), DIMENSION(71385) :: weather_reports


现在读取数据确实非常容易...

do i = 1, 71385
read(18,*) weather_reports(i)
end do


看!看不到明确的格式。正确声明变量,然后让Fortran解析输入行。

注意:


我写的是比较现代的Fortran,没有固定格式的源文件。
我没有为读取文件头做任何安排,已经有相应的代码了。
编写 met_record就像 write(28,*) weather_reports(i)一样简单

关于csv - 如何在Fortran中读取我的csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46444414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com