task
读取txt中的文本(json样式,有数字、字母、汉字)
按需提取变量内容、写入excel
step1: 读取txt
第一次尝试如下代码
with open("test.txt","r") as f:
data=f.read()
print(data)
报错如下
gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence
网上找了很多教程都没用,很多人说加encoding='utf-8'
,直到有人说要看看你的txt文件的编码格式是什么
我的是utf-16,所以代码这么写
with open("test.txt","r",encoding="utf-16") as f:
data=f.read() #data类型是str
step2: 数据整理
由于我要处理的txt文档内容是json格式,所以我import json来处理
import json
data2=json.loads(data) #data2类型是dict
data2字典中的key有3个(见下图),对我有用的key是data,通过type方法我知道data2['data']的类型是list
此时可以print一下data2['data']的内容(此处省略)。data2['data']的有72个元素(每一个元素都是一个json格式的信息组,信息组中对我有用的是intentName和ruleList)
设置好一些空数组存储我想要整理的内容,之后遍历data_list
step3: pandas整理成行、列,并存入excel
借用dataframe整理好每一列的名称、每一列对应的变量
from pandas.core.frame import DataFrame
c={"intentName" : intentName,
"ruleList1" : ruleList[0],
"ruleList2" : ruleList[1],
"ruleList3" : ruleList[2],
"ruleList4" : ruleList[3],
"ruleList5" : ruleList[4],
"ruleList6" : ruleList[5],
"ruleList7" : ruleList[6],
"ruleList8" : ruleList[7],
"ruleList9" : ruleList[8]
}#将列表a,b转换成字典
mypd=DataFrame(c)#将字典转换成为数据框
有需要可以按列进行排序
mypd.sort_values(by="intentName",inplace=True,ascending=True)
写入excel
mypd.to_excel("***.xlsx",index=False)
完工~