一、運行環境
1、python版本 2.7.13 博客代碼均是這個版本
2、系統環境:win7 64位系統
二、需求 對雜亂文本數據進行處理
部分數據截圖如下,第一個字段是原字段,后面3個是清洗出的字段,從數據庫中聚合字段觀察,乍一看數據比較規律,類似(幣種 金額 萬元)這樣,我想著用sql寫條件判斷,統一轉換為‘萬元人民幣' 單位,用sql腳本進行字符串截取即可完成,但是后面發現數據并不規則,條件判斷太多清洗質量也不一定,有的前面不是左括號,有的字段里面沒有幣種,有的數字并不是整數,有的沒有萬字,這樣如果存儲成數字和‘萬元人民幣'單位兩個字段寫sql腳本復雜了,mysql我也沒找到能從文本中提取數字的函數,正則表達式常用于where條件中好像,如果誰知道mysql有類似從文本中過濾文本提取數字的函數,可以告訴我哈,這樣就不用費這么多功夫,用kettle一個工具即可,工具活學活用最好。
結合用python的經驗,python對字符串過濾有許多函數稍后代碼中就是用了這樣的辦法去過濾文本。

第一次部分清洗數據截圖
三、對數據處理的宏觀邏輯思考
拿到數據,先不要著急寫代碼,先思考清洗的邏輯,這點很關鍵,方向對了事半功倍,剩下的時間就是代碼實現邏輯和調試代碼的過程。
3.1思考過程 不寫代碼:
我想實現的最終的數據清洗是將資金字段換算成【金額+單位+各幣種】的組合形式或者【金額+單位+統一的人民幣幣種】(幣種進行匯率換算),分兩步或者三步都可以
3.1.1拆分出三個字段,數字,單位,幣種
(單元分為萬和不含萬,幣種分為人民幣和具體的外幣)
3.1.2將單位統一換為萬為單位
第一步中單位不是萬的 數字部分/10000,是萬的數字部分保持不變
3.1.3將幣種統一為人民幣
幣種是人民幣的前兩個字段都不變,不是的數字部分變為數字*各外幣兌換人民幣的匯率,單位不變依舊是第二步統一的‘萬'
3.2期望各步驟清洗效果 數據列舉:
從這個結果著手我們步步拆解,先梳理 清洗邏輯部分
3.2.1第一次清洗期望效果 拆分出三個字段 數字 單位 幣種:
①字段值=“2000元人民幣”,第一次清洗
2000 不含萬 人民幣
②字段值=“2000萬元人民幣”,第一次清洗
2000 萬 人民幣
③字段值=“2000萬元外幣”, 第一次清洗
2000 萬 外幣
3.2.2第二次清洗期望效果 將單位 統一歸為萬:
#二次處理條件
case when 單位=‘萬' then 金額 else 金額/10000 end as 第二次金額
①字段值=“2000元人民幣”
0.2 萬 人民幣            
新聞熱點
疑難解答