python数据清洗实例_Python文本清洗案例分析:直播弹幕数据清洗
任务需求
清洗json格式的弹幕数据(以“聆听丶芒果鱼直播间时间切片弹幕.json”为例),具体要求如下:
提取出所有弹幕类型(列表中的第1个元素)为”NM“的弹幕的内容(列表中的第4个元素)取出,存为一条弹幕为一行的txt格式文件。
剔除弹幕中的不可见字符(包括制表符、换行符等)
将弹幕中的所有英文字符转换为小写
将弹幕中的所有全角字符转换为半角字符
将弹幕中的所有繁体字转换为简体字
将弹幕中大于等于4个的、连续的、相同的中文汉字合并为3个(例如将”啊啊啊啊啊啊“替换为”啊啊啊“)
将弹幕中大于等于4个的、连续的、相同的英文字母或数字合并为3个(例如将”666666“替换为”666“)
将弹幕中大于等于3个的、连续的、相同的标点符号合并为2个(例如将“???”替换为”??“)
实现方法
基于以上需求,我们逐个确定实现方法。
剔除不可见字符
根据对弹幕内容中包含的不可见字符的分析,我们主要需要剔除制表符(\t)、回车符(\r)和换行符(\n)。
source = source.replace("\t", "").replace("\r", "").replace("\n", "")
替换英文大小写
将所有英文字符转换为小写只需要使用字符串自带的方法即可。
source = source.upper() # 将字符串中的英文全部转换为大写
source = source.lower() # 将字符串中的英文全部转换为小写
将全角字符转换为半角字符
我们遍历弹幕字符串中的每个字符,依据Unicode编码将全角字符转换为半角字符。
def full_width_to_half_width(string):
""" 将全角字符转化为半角字符
:param string: 需要转化为半角的字符串
:return: 转化完成的字符串
"""
result = ""
for uchar in string:
inside_code = ord(uchar)
if inside_code == 12288: # 全角空格直接转换
inside_code = 32
elif 65281 <= inside_code <= 65374: # 全角字符(除空格)根据关系转化
inside_code -= 65248
result += chr(inside_code)
return result
将繁体字转换为简体字
因为繁简转换涉及到繁简分歧词等多种情况,所以我们不宜直接按字转换,而更应该按词转换。因此我们使用其他人造的轮子,通过HanLP的
convertToSimplifiedChinese函数将弹幕字符串中的繁体字转换为简体字。
from pyhanlp import HanLP
source = HanLP.convertToSimplifiedChinese(source)
合并连续相同的字符
我们使用包含反向引用的正则表达式来匹配连续且相同的字符,又考虑到每个句子当前可能包含多个不同的连续且相同的字符,因此使用findall方法来进行匹配。
反向匹配是指正则表达式中的"\1",“\1”可以用来指代第一个被“()”定义的子表达式。
for chinese_character in re.findall(r"([\\u4e00-\\u9fa5])\1{3,}", source):
source = re.sub("[" + chinese_character[0] + "]{3,}", chinese_character * 3, source)
for chinese_character in re.findall(r"([A-Za-z])\1{3,}", source):
source = re.sub("[" + chinese_character[0] + "]{3,}", chinese_character * 3, source)
for chinese_character in re.findall(r"([0-9])\1{3,}", source):
source = re.sub("[" + chinese_character[0] + "]{3,}", chinese_character * 3, source)
(以上三个循环的正则表达式可以合并并简化为一个循环)
类似的,连续且相同的标点符号的处理方法如下。
PUNCTUATION_LIST = [" ", " ", ",", ",", ".", "。", "!", "?"] # 样例标点符号列表
punctuation_list = "".join(PUNCTUATION_LIST)
for match_punctuation in re.findall("([" + punctuation_list + "])\\1{2,}", source):
source = re.sub("[" + match_punctuation[0] + "]{2,}", match_punctuation * 3, source)
source = re.sub("-{2,}", "---", source) # 处理特殊的短横杠
结果输出
在完成弹幕内容的清洗后,我们可以将临时变量中的数据存储到文件中。
with open("时间切片弹幕(清洗后).txt", "w+", encoding="UTF-8") as file:
file.write("\n".join(barrage_list))
python数据清洗实例_Python文本清洗案例分析:直播弹幕数据清洗相关推荐
- 非线性有限元:基本理论与算法及基于Python、Fortran程序实现与案例分析实践技术
有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元解法.尽管各类商业软件使用方便,但其使用对用户来说往往是一个"黑箱子" ...
- 非线性有限元:基本理论与算法及基于Python、Fortran程序实现与案例分析
非线性有限元:基本理论与算法及基于Python.Fortran程序实现与案例分析 (qq.com) 有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采 ...
- 岩土工程--非线性有限元:基本理论与算法及基于Python、Fortran程序实现与案例分析
非线性有限元:基本理论与算法及基于Python.Fortran程序实现与案例分析实践技术 有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元 ...
- python进行简单的文本相似度分析
python进行简单的文本相似度分析 本文利用gensim包.jieba包和TF-IDF模型进行简单的文本相似度分析.从而能够让我们确定,哪句话和哪句话相似程度是多少.文本相似度分析是自然语言处理中常 ...
- Python文本整理案例分析:《全唐诗》文本整理
在整理<全唐诗>的文本之前,我们首先需要完成以下两个步骤: 确定需求 了解文本 在完成以上步骤后,我们开始实际着手整理文本,在整理的过程中大体上也包含两个流程: 文本解析 结果输出 全唐诗 ...
- [转载] 用Python进行简单的文本相似度分析
参考链接: Python 3中的文本分析 学习目标: 利用gensim包分析文档相似度使用jieba进行中文分词了解TF-IDF模型 环境: Python 3.6.0 |Anaconda 4.3.1 ...
- python实现实例_Python 练习实例65
Python 练习实例65 题目:一个最优美的图案. 程序分析:无. 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- import math clas ...
- 24类情感分析英语文本标注案例分析
什么是情感分析? 情感分析,又称意见挖掘(opinion mining)和倾向性分析.简单地说,就是对主观内容进行分析.总结和推理的过程.通过判断信息中的情感取向,进行口碑分析.话题监测和舆情分析等. ...
- python考勤记录_python连接中控考勤机分析数据
用python连接中控考勤机. 下载并分析数据,把结果邮件给人事. SDK包建议用32位的,在win7 64位系统上用64位开发包不行,用32可以. python还要pywin32 注意版本,我这用的 ...
最新文章
- python修改类属性值_python编程入门到实践:直接修改属性的值和通过方法修改属性的值...
- sharepoint column中的图片链接不能显示为图片
- Unity3D研究院之Android同步方法读取streamingAssets
- Java Optionals获得更具表现力的代码
- php如何使用高阶函数
- 电脑系统linux普通用户,Linux操作系统用户管理
- ubuntu下修改网卡名称
- 信息学奥赛一本通C++语言——1017: 浮点型数据类型存储空间大小
- 中华人民共和国民法典
- 柔性电子综述2013 ---电子皮肤 The Evolution of Electronic Skin (E-Skin)
- Protel (DXP2004sp2) 许可协议认证过程
- Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
- 将centos7打造成桌面系统centos
- 计算机主板提示ahci,电脑BIOS没有AHCI功能没有办法BIOS刷新怎么办
- ios 判断手机角度_iOS 角度获取及旋转
- 我是一匹来自北方的狼
- c语言中怎么定义一个指针,C语言中,定义一个指针的时候为这个指针开辟...
- s7-200 smart中VD,VW这类变量在INTOUCH中如何对应
- ArcGIS基础实验操作100例--实验24提取栅格独立格网面
- 最新长三角shp底图(两省一市+安徽)