如果某些数据包含空格,如何读取逗号分隔的数据文件

时间:2013-03-18 19:45:56

标签: fortran fortran95

我正在尝试读取一个使用逗号作为分隔符的数据文件,如下所示

IPE 80,764,80.14,8.49
IPE 100,1030,171,15.92

但是,如果我使用

阅读
READ(1,*) var1, var2, var3, var4

它将IPE和80读作不同的数据。换句话说,它将逗号和空格都计为分隔符,但我不希望这样。我怎么能告诉我的程序“嘿,空格不能只用逗号分隔!” ?

1 个答案:

答案 0 :(得分:6)

一种可能性是将整行读入字符串缓冲区,并自己查找(某些)分隔符。假设与您的示例类似,只有第一列包含空格,您可以这样做:

program test
  implicit none

  character(1024) :: buffer
  character(20) :: var1
  integer :: pos, var2
  real :: var3, var4

  read(*,"(A)") buffer
  pos = index(buffer, ",")
  var1 = buffer(1:pos-1)
  read(buffer(pos+1:), *) var2, var3, var4
  print *, var1, var2, var3, var4

end program test

这样,您可以手动拆分受空格影响的字符串部分,以及通过read语句方便地读取的所有其他内容。如果不仅仅是第一个而且其他字段都可以包含空格,那么很容易扩展上面的例子,通过index()函数在缓冲区中查找所有必要的分隔符。