1. 程式人生 > >用 jupyter notebook 開啟 oui.txt 檔案出現的問題及解決方案

用 jupyter notebook 開啟 oui.txt 檔案出現的問題及解決方案

問題背景:下載了2018 IEEE 最新的 oui.txt 檔案。裡面包含了 裝置 MAC 地址的前六位對應的廠商。要做的工作是,將海量裝置的 MAC 地址與 oui.txt 檔案的資訊比對,統計出 蘋果,華為,小米,OPPO,VIVO 這5家廠商的佔比情況。oui.txt 文件裡面的內容如下圖所示。

oui.txt 檔案中有很多冗餘資訊。現在只關心前 6 位 mac 地址和五個廠商的對應關係。所以,對 oui.txt 裡的資料清洗一下。

處理 oui.txt 出現的問題:

1.按照下面的寫法,會報錯

1 with open('data/oui.txt') as f:
2     for
line in f.readlines(): 3 if('Apple' in line and '-' not in line): 4 print(line)

看來是編碼問題,搜尋了別人相關問題的回答,然後嘗試方法2:

1 with open('data/oui.txt', encoding='gb18030') as f:
2     for line in f.readlines():
3         if('Apple,' in line and '-' not in line):
4             print(line)

結果依舊出錯。

再次嘗試下面的的程式碼:

1 with open('data/oui.txt', encoding='gb18030', errors='ignore') as f:
2     for line in f.readlines():
3         if('Apple,' in line and '-' not in line):
4             print(line)

就成功了。但是不太理解這個 error=‘ignore’ 會不會讓我需要的資訊漏讀。

 

聰明的大虎給我提供了一個思路:可以用 utf-8

所以改成下面的樣子:

1 with open('data/oui.txt', encoding='utf-8') as f:
2     for line in f.readlines():
3         if('Apple,' in line and '-' not in line):
4             print(line)

這次成功,完全讀取出來了,整理出的格式如下:IEEE分配給蘋果的前六位mac地址太多,這裡只展示一部分。

 

果然,看書敲程式碼學習是一回事,自己做東西出來是另外一回事