Re: [問題] 讀 csv 問題

看板C_and_CPP作者 (藍影)時間15年前 (2010/12/20 07:15), 編輯推噓3(3010)
留言13則, 5人參與, 最新討論串2/2 (看更多)
原文恕刪.. 在此先再次感謝 love 大協助處理!! 說聲抱歉的是,一開始竟然對 csv 的特性沒抓準。 確認符號: 單引號(') 雙引號(") 逗號(,) 以下是我直接從 M$ excel 存成 csv 結果之整理: 1. 若為純文字、數字,且其中不包含雙引號、單引號、逗號, 則直接以逗號分隔。 2. 若該格無任何內容,則直接跳過該格,即會出現連續二個逗號。 (這點和 wiki 上不同, wiki 指明,若無內容會以 ,"", 方式存) 3. 若該格內容有雙引號或逗號,則將為該儲存格加上雙引號, 同時用 notepad 檔開啟結果,會發現原本的雙引號會以 2個雙引表示 ex: 12"27"53(excel 顯示) ---> "12""27""53"(csv文本) 4. 若該格內容「開頭」有單引號,excel 存完後開頭之單引都將不見 ex: '12'34'(excel 也無法顯示第一個單引號) ----> 12'34'(csv 文本儲存) 整理上述四點,FSM 狀態大致上長這樣: CurrentState ch NextState Action IDLE - First - -------------------------------------------- First , NOTHING - First " Quote0 - First 0 ReadEnd - #end First else PureText - --------------------------------------------- PureText , IDLE - PureText else PureText Output ch ---------------------------------------------- NOTHING - IDLE - (or output NULL) ---------------------------------------------- Quote0 " Quote1 - Quote0 else Quote0 Output ch ---------------------------------------------- Quote1 " Quote0 Output " Quote1 , IDLE - ---------------------------------------------- 花了一點小時間畫了 FSM ( http://ppt.cc/tsJ6 ) 由於沒經驗,畫得也真的有點小亂(也是醜啦) 不知對於這張 FSM 是否有其它建議? 這種方式在效率而言是否會慢許多? (沒問題的話晚上我再 coding 出來跟大家做分享) 亦或差不了多少?謝謝各位版友不吝指教,再次感謝!! -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: tropical72 來自: 180.177.76.142 (12/20 07:37)

12/20 11:56, , 1F
這篇FSM值得留存下來 :)
12/20 11:56, 1F

12/20 11:56, , 2F
原來你是要做還原喔 囧rz
12/20 11:56, 2F

12/20 13:04, , 3F
推這篇~ 原po厲害~
12/20 13:04, 3F

12/20 13:22, , 4F
我的話, 還是會把 ',' 的部份分開來做, 欄位切出來再
12/20 13:22, 4F

12/20 13:22, , 5F
做第二次處理, FSM也會比較簡單
12/20 13:22, 5F

12/20 13:40, , 6F
剛發現到的問題, 第三點是不是即為: 將欄位中的 ""取
12/20 13:40, 6F

12/20 13:41, , 7F
代成 ", 之後再將頭尾的 " 去掉?
12/20 13:41, 7F

12/20 18:11, , 8F
!! 是的,就是 loveme00835 大所說的,之前還沒想到說.
12/20 18:11, 8F

12/20 18:16, , 9F
不過如果先把','分開的話,那可能會有這種情形 ,",", 也
12/20 18:16, 9F

12/20 18:16, , 10F
就是內容本身就是逗號,所以我覺得這樣的話就沒很準了.
12/20 18:16, 10F

12/20 20:16, , 11F
每個欄位容許偶數個 ", 上一篇我就是這樣做 XD
12/20 20:16, 11F

12/20 20:54, , 12F
加上上面的條件的確簡單蠻多的.
12/20 20:54, 12F

12/28 01:31, , 13F
期待原po的code分享
12/28 01:31, 13F
文章代碼(AID): #1D3f8CHP (C_and_CPP)
文章代碼(AID): #1D3f8CHP (C_and_CPP)