问题背景:下载了2018 IEEE 最新的 oui.txt 文件。里面包含了 设备 MAC 地址的前六位对应的厂商。要做的工作是,将海量设备的 MAC 地址与 oui.txt 文件的信息比对,统计出 苹果,华为,小米,OPPO,VIVO 这5家厂商的占比情况。oui.txt 文档里面的内容如下图所示。

oui.txt 文件中有很多冗余信息。现在只关心前 6 位 mac 地址和五个厂商的对应关系。所以,对 oui.txt 里的数据清洗一下。

处理 oui.txt 出现的问题:

1.按照下面的写法,会报错

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

看来是编码问题,搜索了别人相关问题的回答,然后尝试方法2:

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

结果依旧出错。

再次尝试下面的的代码:

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

就成功了。但是不太理解这个 error=‘ignore’ 会不会让我需要的信息漏读。

聪明的大虎给我提供了一个思路:可以用 utf-8

所以改成下面的样子:

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

这次成功,完全读取出来了,整理出的格式如下:IEEE分配给苹果的前六位mac地址太多,这里只展示一部分。

果然,看书敲代码学习是一回事,自己做东西出来是另外一回事

最新文章

  1. 用Backbone.js创建一个联系人管理系统(二)
  2. Android中获取蓝牙log
  3. 剑指 offer set 6 打印从 1 到 N 的所有数
  4. https 方式使用git@osc设置密码的方式
  5. 用DirectShow实现视频採集-流程构建
  6. 重新格式化namenode后,出现java.io.IOException Incompatible clusterIDs
  7. 单元测试不是梦,Android+PowerMock系列(1) —— 在Eclipse里搭建测试环境
  8. curl 解析
  9. 《Linux内核分析》week1作业-分析一个简单c语言的汇编代码
  10. css样式:列表
  11. UIScrollView和UIPageControl学习使用
  12. swift MBProgressHUD加载gif或者apng的动图
  13. jdbc-大数据存储
  14. Effective Java 之-----返回零长度的数组或集合而不是null
  15. seafile数据的备份与恢复
  16. DOM扩展:DOM API的进一步增强[总结篇-上]
  17. 关于Java堆、栈和常量池的详解
  18. 项目抛弃Tomcat容器,用代码启动Tomcat插件
  19. Python: translate()审查清理文本字符串
  20. 学习总结(ASP.NET MVC 5)

热门文章

  1. OAuth2.0配置
  2. JAVA时间Date工具类
  3. OO第一单元总结(表达式求导)
  4. 关于sql server profiler 监控工具的使用
  5. 关于delete请求,后台接收不到数据
  6. ASP.NET页面之间传值的方式之Cookie(个人整理)
  7. Springboot 实现多环境配置
  8. centos7将网卡名字改成eth样式
  9. zigbee 中ZDO的理解
  10. Java8增强的包装类