作者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/m.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