Fortran Coder

查看: 15496|回复: 6
打印 上一主题 下一主题

[文件读写] Fortran读取含有汉字的CSV文件,并根据时间筛选数据

[复制链接]

5

帖子

1

主题

0

精华

入门

F 币
65 元
贡献
30 点
跳转到指定楼层
楼主
发表于 2017-9-27 15:17:53 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
Fortran小白,求助:我的数据是CSV文件,内容如图所示,我想要用Fortran读取数据并根据时间进行筛选出我想要的月份,写入新的文件中,请问有大神可以指导一下么

1506496188(1).jpg (32 KB, 下载次数: 417)

1506496188(1).jpg
分享到:  微信微信
收藏收藏1 点赞点赞1 点踩点踩

5

帖子

1

主题

0

精华

入门

F 币
65 元
贡献
30 点
7#
 楼主| 发表于 2017-10-8 15:34:46 | 只看该作者
fcode 发表于 2017-10-8 11:18
我这里没有你的数据,我自己编纂了几行数据来测试,是OK的。

数据量大,本身并不是问题。但数据量大,可能 ...

好的好的,真是非常感谢

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1642 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

6#
发表于 2017-10-8 11:18:10 | 只看该作者
我这里没有你的数据,我自己编纂了几行数据来测试,是OK的。

数据量大,本身并不是问题。但数据量大,可能增加数据文件里有错误的几率。建议你多输出一些内容,比如每次循环输出一个计数,观察第几个计数时停止了?到对应的数据文件的行去找原因。

5

帖子

1

主题

0

精华

入门

F 币
65 元
贡献
30 点
5#
 楼主| 发表于 2017-10-6 12:06:08 | 只看该作者
本帖最后由 山水 于 2017-10-6 17:06 编辑
fcode 发表于 2017-10-6 10:00
并不是因为文件太大。

可能的原因是:

文件路径和年份设置都是对的,我用其中的一部分数据运行,有些可以出来结果,有些就不行,所以才怀疑是不是文件太大了,还是字符串定义的小了程序是这样的
还有就是想让帮忙看一下,怎样同时满足两个条件进行筛选,我试了一下,只能根据第一个要求筛选,第二个不管用,程序如下:

@%(SZ_6R_BU{FZ$UAJS`I~F.png (12.59 KB, 下载次数: 391)

@%(SZ_6R_BU{FZ$UAJS`I~F.png

1]}M$OX%L4E(_X4V0%FS$CN.png (15.56 KB, 下载次数: 375)

1]}M$OX%L4E(_X4V0%FS$CN.png

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1642 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2017-10-6 10:00:47 | 只看该作者
并不是因为文件太大。

可能的原因是:
1.你的文件路径有问题。
2.你的年份设置有问题。
3.其他

5

帖子

1

主题

0

精华

入门

F 币
65 元
贡献
30 点
板凳
 楼主| 发表于 2017-10-5 12:34:26 | 只看该作者
fcode 发表于 2017-9-28 08:04
是否含有汉字,并不影响本问题。
以筛选 2017 年 3 月为例:
[mw_shl_code=fortran,true]Program Main

万分感谢,万分感谢  但是我试了一下,运行出来的文件是空的,会不会因为我的数据太大了(600多兆),我想挑选的是有比如说2014年12月,2015年1-5月,12月2016年1-5月,12月,2017年1-5月,要怎么弄呢,希望不要嫌弃我这个小白

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1642 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2017-9-28 08:04:14 | 只看该作者
是否含有汉字,并不影响本问题。
以筛选 2017 年 3 月为例:
[Fortran] 纯文本查看 复制代码
Program Main
  Implicit None
  Character(len=1024) :: c
  integer :: k
  Open(12,File="文件名.csv")
  Open(13,File="输出文件名.csv")
  Do
    Read(12,'(a1024)',iostat=k) c
    if( k /= 0 ) exit
    if( index( c , '2017/3' ) > 0 ) write(13,'(a)') trim(c)
  End Do
  Close(12)
End Program Main


您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-27 11:07

Powered by Tencent X3.4

© 2013-2024 Tencent

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