作者chaosam (NJ)
看板Fortran
标题[问题] 读取数字文字混和档案到阵列
时间Mon Feb 24 21:41:14 2020
目前手上的资料档格式长成下列这样
2222 33.02 2.6 7.7
2222 33.02 2.6 7.7
2222 33.02 >0 7.7
2222 33.02 2.6 <0
里有>或<的符号
但是随机出现
由於阵列必须宣告形式
好像无法读浮点数又读文字
想请问如何将档案内的文去除或取代成9999之类
好让档案可以读入阵列
(目前做法是先丢到EXCEL里面取代)
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.137.171.145 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1582551676.A.868.html
1F:→ blc: 先读成字串,确定是数字再放到阵列里 02/25 00:25
2F:推 espresso1: 如一楼所述,可以开启档案後先以字串方式读取, 03/07 21:14
3F:→ espresso1: 有特殊符号的地方用空白取代後, 03/07 21:14
4F:→ espresso1: 写进另一个新的只有单纯数字的档, 03/07 21:15
5F:→ espresso1: 然後 rewind 重新读取数字放进阵列,例如: 03/07 21:15
6F:→ espresso1: do 03/07 21:16
7F:→ espresso1: read (11, '(a)', iostat = ios) string 03/07 21:16
8F:→ espresso1: if (ios /= 0) exit 03/07 21:17
9F:→ espresso1: do i = 1, len_trim(string) 03/07 21:17
10F:→ espresso1: if (string(i:i) == '>' .or. string(i:i) == '<') 03/07 21:17
11F:→ espresso1: end do 03/07 21:18
12F:→ espresso1: write (21, '(a)') trim(string) 03/07 21:18
13F:→ espresso1: end do 03/07 21:18
14F:→ espresso1: rewind (21) 03/07 21:18
15F:→ blc: read(string,"(f4.2)")number ! 字串转数字 03/09 18:16
16F:→ kkarthur: read配合iostat 读到有错rewind後再重新处理 03/26 18:03
17F:推 fragmentwing: 可以试试转成ascii指定0~9去读 03/31 10:30
18F:→ fragmentwing: 不过你的状况可能还需要查.的ascii 03/31 10:31
19F:→ fragmentwing: 当然这一样是以一楼的方法为基础 03/31 10:32