看板 Python 關於我們 聯絡資訊
※ 引述《os653 ()》之銘言: : 有很多個月份的 Excel 想要做比較,基本上每個月一份 Excel : 內容大概是某某東西某某月銷售多少,想計算銷售成長率 : 問題是資料有點雜 : 像是東西的名字不太固定,同月份的珍奶跟珍珠奶茶應該要併計 : 或是販售的場所名字略有不同,XX豆漿跟XX豆漿大王其實指的是同個東西 : 我自己想了兩個處理辦法 : 1. 不管內容,全部參在一起做成撒尿牛丸 : 直接把資料都讀進資料庫,像這樣 : 2015/03 XX豆漿大王 珍奶 100 : 2015/03 XX豆漿 珍奶 200 : 2015/04 XX豆漿大王 珍珠奶茶 300 : 2015/04 XX豆漿 珍珠奶茶 400 : 之後再回頭慢慢把同義不同名的資料合併 : 2. 先設計好資料庫,每一份 Excel 單獨寫一個 parser 去處理 : parser 要負責把同義不同名的資料修正後再丟進資料庫 : 請問這兩個做法那個比較好?或是有其他更適當的做法? : 我自己覺得兩個做法都有點彆扭,還請各位提供點意見,感謝 當然是先parse再進資料庫, 不過沒說你資料量有多少, 讀進資料庫只要幾秒的量, 什麼做法也沒差了。 不過為什麼一個檔案一個parse, 每個檔案資料名稱差異很大嗎? 個人作法應該會是整個parse寫好, 自動open excel檔parse完直接塞資料庫, 就是一次寫完就放給它全自動完成, 不過重點還是在於parse做的準不準確吧。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.75.211 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1459444417.A.78A.html
os653: 是的,檔案名稱差異很大,我試著把所有文字部分抓出來比對 04/01 05:52
os653: 五個檔案的文字部分(不重複)大概都是1xx個 04/01 05:53
os653: 但是這五個檔案完全相同的文字部分只有2x個 04/01 05:54
os653: 資料量並不大,但是看來文字部分的歧異很大 04/01 05:56
os653: 所以才考慮一份 Excel 寫一個 parser,但這感覺又有點蠢... 04/01 05:56
os653: 我在想能不能讓 parser 能讀某種定義檔 04/01 06:04
os653: 這樣可以每個 Excel 寫一份定義檔就好,parser 維持不變 04/01 06:04
os653: 但定義檔要怎麼設計就又沒概念了,不知道有沒有現成的可抄 04/01 06:05
Yshuan: 我可能會找能吃EBNF的paeser吧 04/01 09:50
os653: 看了一下EBNF,好像不是我想要的Q_Q 04/01 17:15
largesperm: 自己建 dict mapping 一開始當然會比較辛苦 04/01 21:57
largesperm: 但是久了 dict 就很豐富了 "珍奶" "珍珠奶茶" 自動 04/01 21:57
largesperm: mapping 成為 珍奶 04/01 21:58
largesperm: 第一步先 mapping 第二部就可以直接 parse 了 04/01 21:58
largesperm: 每一個 excel 都可以套用同一個 parser 04/01 21:59
largesperm: if itemName == "珍珠奶茶": itemName = "珍奶" 04/01 22:01
largesperm: 讀進來的時候順便檢查名稱 有找到就直接改掉 04/01 22:01
largesperm: 最後你就可以統整了 04/01 22:01
largesperm: if itemName in dict.keys(): itemName = dict[itemN 04/01 22:02
largesperm: ame] key 是改名前 value 是改名後 04/01 22:03
largesperm: 1xx個 建 dict 應該不會花太久時間 04/01 22:04
os653: 好吧,看來也只能這樣了,一個一個慢慢加 04/02 00:50