作者:守卫
关键词:文本,excel
1.在做一些文本抓取时,如聊天记录、直播弹幕、评论等信息时,会获取大量的文本内容(人名、时间、内容等)。这些文本内容看上去复杂繁琐而且文字量很大,无法一目了然。这时就需要将文本转成excel。
2.在教育体系中,一键生成电子卷子,不能直接将已有的word试卷直接导入,而是要转成对应格式的excel才能进行导入。
注:解决方案不唯一,要根据特定情况,进行特定分析。修改不同的分割方式,以及不同的判断逻辑。
接下来介绍的一种方式为,以空一行(即两个回车键)为单独一个一个整体(一行);以换行(即一个回车键)为一个字段内容(一列);如下图所示:

通用代码逻辑:
1.打开文本内容,读取所有内容。
2.按照不同文本进行分割(具体请看更下面内容)
3.将分割好的内容重新整理成新的内容。
#打开文件 并阅读其中内容
path = "文件路径"
with open(path,"r",encoding="utf-8") as f:
text = f.read()
"""此处要按照 不同的文本内容的分割逻辑进行分割,分割成一个"""
#接下来进行重新整理列表,组合成可以写入excel的二位列表
temp_lst = []
for i in lst:
if i == "":
temp_lst.append([])
else:
temp_lst[-1].append(i)1.以"换行"进行分割,如下图所示

处理方法:
text.split("\n") 来进行分割
2.以"序号进行分割",如下图所示

处理方法:

除此之外,还有很多种特殊情况,要根据不同情况进行分析,进行不同的分割方式。

根据上面数据通过整理分析,转成下面表格

完整代码如下:
with open(path,"r",encoding="utf-8") as f:
text = f.read()
lst =text.split("\n")
temp_lst = []
for i in lst:
if i == "":
temp_lst.append([])
else:
temp_lst[-1].append(i)
excel_lst = []
for i in temp_lst:
if i == []:
continue
temp = i[0].split(" ")
excel_lst.append([temp[0]+" "+temp[1],temp[2],i[1]])