Re: [問題] 讀取資料格式不統一
我是 sjgau, 再提供一點 小小的意見。
建議,不要企圖 在一個程式裡面,
做完所有的事情。
建議,化整為零,各個擊破。
先考慮把事情分段,每一個階段
就變成可以簡單考慮和處理的 case.
如果你熟細的工具很多,甚至於可以考慮
不同的階段,使用不同的工具。
譬如說,我在處理 input file 的時候,
習慣使用 Pascal, C
我在處理 矩陣運算的時候,習慣使用 Fortran,
我在處理圖形的輸出,不管是 2D/3D,
習慣產生一個script file, 丟給 AutoCAD,
叫 AutoCAD 自動產生出來。
範例如下:
point
x1,y1
line
x1,y1
x2,y2,
.
.
.
circle
xc,yc,
r
arc
x1,y1
x2,y2
x3,y3
text
x1,y1
3.0
0
abc-123
spline
x1,y1
x2,y2
x3,y3
x4,y4
.
.
.
以上,把 2D 的點座標,改成 x1,y1,z1
一樣 OK
考慮看看吧
※ 引述《mouseforlove (我是瓜呆)》之銘言:
: 首先感謝sjgau大的建議,先使用字串來做處理確實幫我解決了問題
: 我遇到的資料,除了最前面要讀的實數資料位數不同外,後面還包含了"tab"、":"、"/"
: 等符號,因此無法給予固定格式來讀
: 所以我先將資料讀取為一長字串,假設字串長度n,讀取字串為a,然後做以下處理
: do i=1,n
: read(a(i:i),'(a1)') w !w為長度為1的character
: if (w.eq.'/'.or.w.eq.':') then
: a(i:i)=' ' !用空格取代
: endif
: enddo
: 這樣原先字串 3.7 2011/05/01 會變為 3.7 2011 05 01
: 便可以直接使用自由格式讀取資料 read(a,*) var,yyyy,mm,dd
: 但在這裡要注意的是,如果是處理單筆的資料,可以直接用read讀處理後的字串a
: 但是當處理的資料筆數非常多,使用迴圈重複讀取時,直接讀取a會出現我還沒搞清楚的
: 問題,因此我的作法是先將所有處理好的a寫入到一個暫存的檔案,再重新讀取這個暫存
: 的檔案,便不會出現問題,但是這對於資料數很多的時候不是那麼理想,所以還要看各位
: 先進是否有什麼好的建議。
: 再次感謝sjgau寶貴的意見。
: ※ 引述《sjgau (sjgau)》之銘言:
: : 先使用 字串的方式讀進來,
: : 自己寫副程式 ,使用空格來 切開字串,
: : 再來處理,把字串轉換成 浮點數,
: : 把字串轉換成 時間的日期天數。
: : 好像,以上的工作,使用 C++ 會很容易。
: : 建議,
: : 讀寫資料檔案,使用 C++ 來處理,
: : 計算的部份,使用 Fortran
: : 中間,使用 硬碟檔案來 交接資料
: : 你看 如何?
--
e-mail: sjgau4311@gmail.com
我的課程介紹網頁:
http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18
AutoCAD 台灣地區菁英講師獲選
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 116.59.36.193
→
07/01 14:28, , 1F
07/01 14:28, 1F
→
07/01 15:11, , 2F
07/01 15:11, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 6 篇):
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章