Fortran Coder

楼主: 桂圆莲子汤
打印 上一主题 下一主题

[文件读写] fortran抽取csv文件中某几列,写成新文件(新手求教)

[复制链接]

5

帖子

1

主题

0

精华

入门

F 币
65 元
贡献
30 点
楼主
发表于 2017-10-7 11:06:01 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
program test
implicit none  
integer,parameter::nCol = 36
  integer i, j
  character(80) str(nCol)
  
 character(32),parameter::  strHead(1)=['Province']
 !strHead(23)=['Province','City','Stationname','Longitude','Latitude','Publishtime', 'AQI','SO2','NO2','CO','O3','PM10', &
 !'PM2_5','SO2_24H_AVG','NO2_24H_AVG','CO_24H_AVG','O3_24H_AVG','PM10_24H_AVG','PM2_5_24H_AVG','O3_8H','O3_8H_24H','PrimaryPollutant','Quality']

  logical L(nCol)

  open(11,file='F:\GraduateStudent\Data-Data\sichuanpollution.csv')
  open(10,file='F:\GraduateStudent\Data-Data\sichuanpollution1.csv')
  !读取表头
  read(10,*) str 
  !判断需要读取的列
  L = .false.
  do i = 1, nCol
    str(i) = adjustl( str(i) )
    if( any(trim(str(i))==strHead) ) then
      L(i) = .true.
      write(11,"(a,',')",advance='no') trim( str(i) ) !输出新表头
    end if
  end do
  write(11,*)
  do
    read(10,*,iostat=j) str
    if(j/=0) exit
    do i =1, nCol
      if(.NOT.L(i)) cycle
      write(11,'(a,",")',advance='no') trim( str(i) )
    end do
    write(11,*)
  end do
end program test

我复制粘贴后按照自己需要的修改了一下,不管是定义1个变量还是3个甚至更多变量,都会出现这样一个错误:error FOR3852: syntax error detected between = and ['Province'],想问一下是什么原因呢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-6 12:35

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表