PROGRAM predeal_dimianzidong
IMPLICIT NONE
INTEGER ::i,j !读取数据的行数
INTEGER, PARAMETER ::row=62247,col=212
CHARACTER,DIMENSION(row,col) ::data_read,data_1
OPEN(UNIT=3, FILE='SURF_CHN_MUL_HOR_2019080100.txt', STATUS='OLD',ACTION='READ',FORM='FORMATTED',ACCESS='sequential') !打开文件
!READ(3,*) ((data_read(i,j),j=1,col),i=1,row)
DO i = 1,row
READ(3,*)(data_read(i,j),j=1,col)
END DO
!data_1 = transpose(data_read)
print*,SHAPE(data_read)
!PRINT*,data_1
CLOSE(UNIT=3) !关闭文件
STOP
END PROGRAM predeal_dimianzidong
截图.png (118.2 KB, 下载次数: 541)
数据结构类型
2.png (25.6 KB, 下载次数: 524)
报错情况
4.png (59.44 KB, 下载次数: 553)
读取每行数据
3.png (36.77 KB, 下载次数: 581)
读取每行数据
微信截图_20200324172002.png (87.63 KB, 下载次数: 527)
缺失处截图
DO i = 1,row
if(i<57418) then
READ(3,*) data_read(i,:)
else
READ(3,*) data_read(i,7:)
end if
END DO
li913 发表于 2020-3-24 16:07
把你的数据上传,只需要57418行前后几行的数据就行。
DO i = 1,row
li913 发表于 2020-3-24 16:07
把你的数据上传,只需要57418行前后几行的数据就行。
DO i = 1,row
姓名 年龄 体重
张三 30 55.3
李四 40
vvt 发表于 2020-3-24 17:15
你首先需要找到一个规则。再什么情况下,你认为第一列是缺失的,什么情况下你认为是第二列缺失的?
比如: ...
program test
implicit none
integer i
INTEGER, PARAMETER ::row=11,col=212
character(40) dat(col-6, row)
dat = 'undefined'
open(10,file='1.csv')
read(10,*)
do i = 1, row
read(10,*) dat(:,i)
end do
close(10)
end program
li913 发表于 2020-3-25 10:56
看起来你的文件中数据是以tab分隔的,你可以用excel打开数据,检查一下是否有误,然后另存为csv格式。读取c ...
vvt 发表于 2020-3-24 17:25
你可以看看你的数据是如何得来的,是否可以转存为其他数据格式?比如 csv,用逗号间隔开。
比如
daydaycode 发表于 2020-3-25 13:47
十分感谢,现在问题解决了。请问,像这种情况只能把txt转成csv吗,还有别的方法吗? ...
li913 发表于 2020-3-25 17:50
有的,更麻烦。读取整行,以tab为分隔符,将一行分为多个记录,存入数组。 ...
vvt 发表于 2020-3-24 17:25
你可以看看你的数据是如何得来的,是否可以转存为其他数据格式?比如 csv,用逗号间隔开。
比如
Rookie 发表于 2022-4-20 14:54
请问这种缺失的数据,读取的时候会保存为什么?
fcode 发表于 2022-4-20 17:14
没有统一规则。看具体“保存该文件的程序”的策略。
Rookie 发表于 2022-4-22 08:11
好的。关于字符串的缺失,我的电脑直接输出空白。所以我在派生数据的声明阶段,直接初始化了。
PS.我所编 ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |