利用python提取弹幕纯文字部分

老早之前写的草稿,现在发现可能以后会想回忆或者找找灵感。


随便选取B站一个弹幕较多的视频,将其弹幕文件作为练习:

提取前:

  提取后:

分析:

【最好直接用正则表达式提取(一步解决):data = re.findall('<d p=".*?">(.*?)</d>', data)

(.*?代表任意字符,括号括起来的表示需要提取的部分,其他不需要提取的需观察共有部分照写上去,后面,data那个参数表示对data变量进行提取)】

1、首先读取原文件,打印输出发现是2105行9列二维的DataFrame,只有最后一列包含了需要提纯的弹幕,前8列都是与弹幕内容无关的信息,[:, 8]表示所有行,第9列。

2、因为需要访问具体行列,所以要将DataFrame转换成ndarray

否则会有以下错误:

TypeError: '(slice(None, None, None), 1)' is an invalid key

 参考:https://blog.youkuaiyun.com/qxqxqzzz/article/details/88315577

3、最后存储文件用pandas的to_csv函数,每条弹幕换行存储也即间隔为'\n'

(最后:如果no module names pandas,去setting里将project interpreter 设为python 3.10)

代码:

import pandas as pd

data = pd.read_csv('炮姐.txt', error_bad_lines=False)

# 遇到问题1:dataframe转成ndarray的问题(即用下面一行来解决)
data = data.values

data_new = data[:, 8]

# 存储:
data2 = pd.Series(data_new) # 再将其转为DataFrame
data2.to_csv('after.txt', sep='\n', index=False)

现在效果图:

最后用pandas的dtype查看元素类型发现是object类型的元素,文件里存储的是一个完整的元素,对一个元素删改不同与对一个数组删改,由于对一个元素删改较复杂。

所以最后还是选择用txt自带的查找功能:ctrl +H 手动花1min将有规律的多余部分替换为空。并先删去与内容无关的第一行。即可满足需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值