用 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地址太多,這里只展示一部分。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM