从文件中读取丢失的数据

时间:2018-08-30 12:44:36

标签: fortran

我必须读取一个包含数值数据(大部分为实数)的文件,但是也有一些丢失的数据用星号(*)表示。我事先不知道星号的位置,因此必须找到总的有效(数字)数据和总的缺失数据(星号)。

我尝试使用嵌套在do循环中的“选择大小写”来执行此操作,但失败了,因为

  1. 选择器不能使用实型
  2. 我认为我不能将星号放在真实的矩阵中

数据文件看起来像这样

1    0.673070
2    0.750597
3    *
4    0.484100

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

将来会的,请提供更多信息并发布[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),其中包含一些试图读取该代码的代码。

但是,假设您知道每一行都有一个实数或*,那么我将执行以下操作:

Character(len=8) :: LineRead
Real :: RealNumber
open(42,file='MyFile.txt')

do (whichever kind of loop you need to control the input)
   read(42,'(a8)') LineRead
   if (LineRead <> '*       ')
     read(LineRead,'(f8.6)') RealNumber
     ! Increment some sort of valid data counter
   end if
end do

如果您不熟悉此技术,则称为从内部文件读取。任何字符变量都可以通过这种方式“读取”。