最近學習haskell中,想要拿幾個文字檔來練習IO以及資料處理。首先試著找"open data taiwan",想看有沒有台灣政府提供的政府資料。找著找著,找到了經濟部能源局的資料。點了第一個下來,開始準備解壓...檔名是亂碼Orz
雖然可以猜得出檔名應該是「國際原油價格.csv」,但對於處理內有中文檔名的壓縮檔已經不是第一次了。我想要一口氣解決它!(然後haskell之夜就泡湯了Orz,詳下)
搜尋發現了一些解決方案,包括了「unzip -O」(我的unzip沒有這個選項),「LANG環境變數+7za」(出來還是亂碼)。我想要一個可以解壓縮,然後一邊更改檔案名稱編碼的解壓縮程式,不過目前看起來能夠符合我條件的解壓縮程式似乎不存在,所以只好自己來做一個簡易版的。
我首先考慮了正在練習的haskell,但是,就在我腦袋閃過了python的解決方法後,我決定先用python試一下,然後...就結束了?(程式碼見此)
那個python的解決方案使用了python 2.x,而不是python3。仔細一瞧,python3 的 zipfile 模組傳回的檔名字串似乎沒辦法轉換成原本在zip檔中的原始字串(raw string,原汁原味的那個字串),所以沒辦法像在python 2.x裡那樣子做編碼轉換。
鑑於python沒機會了,我想依賴haskell看看。在hackage中搜尋之後,我猜使用zip-archive, iconv,再配合上bytestring這三個package應該就可以完成目標了:使用Data.ByteString.Lazy.Char8 的 pack, Codec.Text.IConv 的 convert 應該就可以順利的進行轉換。現在有點晚了,明天再來試試看。
每次看到別人說 haskell 只是學術界教授們在用的程式語言,我都覺得很傷心:明明有那麼多的 package,這麼有趣的語法...。因此,我衷心的希望我可以利用這次機會來證明 haskell 不只是象牙塔裡的玩具,因此我會加油的!
沒有留言:
張貼留言