很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

效果展示

  • 原始数据

  • 清洗数据

注意事项

每个号码前面带‘+’,而原始文本中有些号码带Fax前缀,为传真号码,需要剔除掉

  • 剔除方法
    首先将文本全部转换为小写,再将’ fax’(注意fax前有空格)转换成’ Fax’,则只要遇到大写F就说明紧接着的号码是传真号码。
    接下来我们设置一个传真标志FaxFlg,默认值:0,遍历所有字符,一旦遇到了’F’,就将标志打开,表示下一个遇到的‘+’后面的号码我们需要舍弃掉,舍弃后又重新见FaxFlg设为0,继续遍历。

代码

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 18 09:46:30 2020 @author: Songyou Han
""" import os
import csv # 获取cvs文件列表函数
def file_name(file_dir):
files = []
for root, dirs, file in os.walk(file_dir):
files = file #当前路径下所有非目录子文件
return files # 电话号码提取函数
def ExtractRawData(source='raw_datas',destination='extract_phone'):
files = file_name(source)
dict = {}
for filename in files:
file = source+"/"+filename
datas = csv.reader(open(file,'r',encoding = "utf-8"))
data_list = []
for item in datas:
data_list.append(item[0])
dict.update({filename:data_list})
return dict def ExtractPhoneNumber(rawData):
PhoneNumbersDict = {}
for key,value in rawData.items():
PhoneNumbersList = []
for row in value:
row = row.lower().replace(" fax"," Fax").replace(" ","")
IndexList = []
FaxFlg = 0
for i in range(len(row)):
if row[i] in ['F']:
FaxFlg = 1
continue
if row[i] in ['+']:
if FaxFlg == 0:
IndexList.append(i)
else:
FaxFlg = 0 PhoneNumbers = []
for index in IndexList:
i = index
PhoneNumber = '+' # 存放单个电话号码的盒子
while row[i+1] in ['0','1','2','3','4','5','6','7','8','9']:
PhoneNumber = PhoneNumber + row[i+1]
i += 1
if PhoneNumber not in PhoneNumbers:
PhoneNumbersList.append(PhoneNumber)
PhoneNumbers.append(PhoneNumber)
print("从以下文本中提取到号码(已去重):"+str(PhoneNumbers))
print("........................")
print(row)
print("========================")
PhoneNumbersDict.update({key:PhoneNumbersList})
return PhoneNumbersDict def WritePhone(FileName,PhoneNumbersList):
f = open('extract_phone/(号码抽取)'+FileName,'w+')
for phone in PhoneNumbersList:
f.write("'"+phone+"'")
f.write("\n")
f.close() rawData = ExtractRawData('raw_datas','extract_phone')
PhoneNumbersDict = ExtractPhoneNumber(rawData)
print("\n\n小伙子,你的电话号码提取完了,现在开始存入extract_phone文件夹中。。。。。。\n")
for key,value in PhoneNumbersDict.items():
WritePhone(key,value)
print("存入文件:\t(号码抽取)"+str(key))
print("\n存好了!!!")

Python数据清洗:提取爬虫文本中的电话号码的更多相关文章

  1. python学习笔记——爬虫学习中的重要库urllib

    1 urllib概述 1.1 urllib库中的模块类型 urllib是python内置的http请求库 其提供了如下功能: (1)error 异常处理模块 (2)parse url解析模块 (3)r ...

  2. 【python】提取sql语句中的表名

    前言 最近刚学python,写一个小工具时需要提取sql语句中表名,查询一番后找到一篇文章挺不错的,mark一下 PS.那篇文章是转载的,且没有标注转载自哪里 正文 import ply.lex as ...

  3. Python:Scrap爬虫过程中遇到的各种错误

    1.KeyError: 'Spider not found: BDS' 原因:settings.py中缺少了几项与spider名字配置相关的项: BOT_NAME = 'BDS' SPIDER_MOD ...

  4. NLP(十五)让模型来告诉你文本中的时间

    背景介绍   在文章NLP入门(十一)从文本中提取时间 中,笔者演示了如何利用分词.词性标注的方法从文本中获取时间.当时的想法比较简单快捷,只是利用了词性标注这个功能而已,因此,在某些地方,时间的识别 ...

  5. 用python正则表达式提取字符串

    在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的正则性能好,很适合做这类字符串的提取,这里讲一下提取的技巧,正则表达式的基础知识就不说了,有兴趣的可以看re的教程. 提取一般分两种 ...

  6. python正则表达式提取字符串

    用python正则表达式提取字符串 在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的正则性能好,很适合做这类字符串的提取,这里讲一下提取的技巧,正则表达式的基础知识就不说了,有兴趣 ...

  7. Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱(转)

    原文:http://www.52nlp.cn/python-网页爬虫-文本处理-科学计算-机器学习-数据挖掘 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开 ...

  8. 【Python】Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

    本文转载自:https://www.cnblogs.com/colipso/p/4284510.html 好文 mark http://www.52nlp.cn/python-%E7%BD%91%E9 ...

  9. NLP入门(十一)从文本中提取时间

      在我们的日常生活和工作中,从文本中提取时间是一项非常基础却重要的工作,因此,本文将介绍如何从文本中有效地提取时间.   举个简单的例子,我们需要从下面的文本中提取时间: 6月28日,杭州市统计局权 ...

随机推荐

  1. php操作mysql关于文件上传、存储

    php+前端+mysql实现文件上传并储存 我们都知道很多网站都需要上传文件,最普遍的就是图片上传,即是用户头像等等: 关于mysql+php实现文件查询,存储大致两个方式, 1.直接把文件写入mys ...

  2. 不使用spring-boot-starter-parent作为依赖parent

    背景环境 在某些情况下由于某些原因,我们的项目不能使用spring-boot-starter-parent作为<parent>依赖,一定要有自己的<parent>,但同时还希望 ...

  3. Caffe CuDNN版本与环境不同导致make错误

    1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp. 2.将./include/caffe/layers里的,所 ...

  4. 实验03——java十进制转二、八、十六进制;打印'中'的十六进制;进制转换的api

    package cn.tedu.demo; /** * @author 赵瑞鑫 E-mail:1922250303@qq.com * @version 创建时间:2020年7月16日 上午10:22: ...

  5. JavaScript异步编程——Async/Await vs Promise

    兼容性 提醒一下各位,Node 现在从版本 7.6 开始就支持 async/await 了.而就在前几天,Node 8已经正式发布了,你可以放心地使用它. 如果你还没有试过它,这里有一堆带有示例的理由 ...

  6. 全程干货,requests模块与selenium框架详解

    requests模块 前言: 通常我们利用Python写一些WEB程序.webAPI部署在服务端,让客户端request,我们作为服务器端response数据: 但也可以反主为客利用Python的re ...

  7. 入门python有什么好的书籍推荐?纯干货推荐,你值得一看 python基础,爬虫,数据分析

    Python入门书籍不用看太多,看一本就够.重要的是你要学习Python的哪个方向,或者说你对什么方向感兴趣,因为Python这门语言的应用领域比较广泛,比如说可以用来做数据分析.机器学习,也可以用来 ...

  8. .Net 异常最佳做法

    异常信息原因 异常是易于滥用的那些构造之一.这可能包括不应该在应有的情况下引发异常或在没有充分理由的情况下捕获异常.还有一个引发错误异常的问题,它不仅无助于我们,而且会使我们困惑.另一方面,存在正确处 ...

  9. FreeAnchor 国科大

  10. C#设计模式之3-建造者模式

    建造者模式(Builder Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/393 访问. 建造者模式属 ...