--人生不是赛场,梦想不容退场,学习编程成就更好的自己--
Python语言简洁生动,特别适合文科生学习入门IT世界,用几十行代码就能够做一个完整的爬虫脚本,开发效率杠杠的!短时间内即可解决工作和学习中碰到的各种棘手问题。(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学Python遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。
上次介绍了如何使用正则表达式提取汉字和简单的数字,今天讲讲正则表达式在实际中的其他场景应用,对小白们来讲稍微有一点点难度和挑战,下面看具体案例:
表1:
表2:
任务:
1.在表1中提取Info字段中的手机号,QQ号和生日信息生成新的字段
2.利用表2性格信息替换表1中Personality字段对应信息并生成新的字段
看看如何利用正则表达式各个击破吧:
1.读取和检查数据:
2.利用正则表达式编写自定义函数-提取手机号码信息:
关键是构造特征表达式(r"d{11}|d{3}-d{8}"),主要运用了|字符表示”或”关系,在情况不复杂的时候可列举所有特征表达式,中间用|字符分隔即可。
3.利用正则表达式编写自定义函数-提取QQ号码信息:
QQ号码在这里相对固定,其模式总结起来也简单。
4.利用正则表达式编写自定义函数-提取生日信息:
关键是构造特征表达式(r"(d{4}[.|-|/]d{2}[.|-|/]d{2})|(d{2}[.|-|/]d{2}[.|-|/]d{4})"),这里使用了|字符,同时使用了[]字符表示在这个位置上有多种符号中某一种出现。
第一个任务顺利完成!!!接下来看看第二个任务:
1.读取表2数据并查看:
2.把两个字段分别装入两个列表中,代表替换者和被替换者:
在这使用了data["字段名"].astype(str).tolist()方法,目的为了后面进行全局暴力替换,这个小知识点一定要掌握,以后可以解决好多问题!!!
3.利用正则表达式通过replace方法进行替换得到新字段:
这里使用replace(list_replace,list_target,regex=True)方法,利用了之前生成的列表进行全局替换,感觉爽不爽!!!第二个任务轻松搞定!!!
代码汇总如下:
import pandas as pd
import re
import os
def Set_Work_Path(x):
try:
os.chdir(x)
route = os.getcwd()
return route
except Exception:
print("No Result")
work_path = r"E:DATA19AUG21"
Set_Work_Path(work_path)
data = pd.read_excel("DATA.xlsx",header=0,sheet_name="DATA",engine="openpyxl")
display(data)
def Get_Handy_Number(x):
try:
mode = re.compile(r"d{11}|d{3}-d{8}")
return re.search(mode,x).group(0)
except AttributeError:
return ""
data["手机号码"] = data["Info"].apply(Get_Handy_Number)
display(data)
def Get_QQ_Number(x):
try:
mode = re.compile(r"QQd+")
return re.search(mode,x).group(0)
except AttributeError:
return ""
data["QQ号码"] = data["Info"].apply(Get_QQ_Number)
display(data)
def Get_Birthdate(x):
try:
mode = re.compile(r"(d{4}[.|-|/]d{2}[.|-|/]d{2})|(d{2}[.|-|/]d{2}[.|-|/]d{4})")
return re.search(mode,x).group(0)
except AttributeError:
return ""
data["生日日期"] = data["Info"].apply(Get_Birthdate)
display(data)
data_info = pd.read_excel("DATA.xlsx",header=0,sheet_name="INFO",engine="openpyxl")
display(data_info)
list_target = data_info["性格"].astype(str).tolist() #替换后的对象
display(list_target)
list_replace = data_info["Character"].astype(str).tolist() #需要替换的对象
display(list_replace)
data["个性特征"] = data["Personality"].replace(list_replace,list_target,regex=True)
display(data)
正则表达式就是香!!!大家赶紧上网搜搜正则表达式的基础知识,有空实操起来吧!!!
END
我为人人,人人为我!!欢迎大家关注,点赞和转发!!!
~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!
页面更新:2024-03-31
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号