最早学习Python的过程中,都会学习读取Excel、csv、txt文件。这类读取都很容易,都举个栗子:
import pandas as pd
#导入CSV
data = pd.read_csv(filepath,"test.csv",encoding = "utf-8")
#导入xlsx
data = pd.read_excel(filepath,"test.xlsx",encoding = "utf-8")
#导入txt
data = pd.read_table(filepath,"test.txt",encoding = "utf-8")
当有一天我拿到一个txt文件,摩拳擦掌想用上面的方法进行直接读取的时候,发生了报错。
所以想针对以下类型进行一次总结。
txt中的文件格式文件中的格式如下:
{"viewNum":100.0,"printNum":0.0,"totalNum":1000.0,"displayName":"公号投放历史"}
{"viewNum":200.0,"printNum":0.0,"totalNum":2143.0,"displayName":"市场/子渠道"}
方法一:单行读取文件(不改变文件格式)
import pandas as pd
import json
#读取单行的json(1)
d_one = []
file_one = open(r"D:\2019-04-14-13_50_40.txt",'r',encoding='utf-8')
#对txt进行遍历
for line in file_one:
d_one.append(json.loads(line))
#创造一个dataframe,并讲空list中的内容赋入dataframe
df_one=pd.DataFrame(d_one)
#读取单行的json(2)
d_two = []
file_one = open(r"D:\2019-04-14-13_50_40.txt",'r',encoding='utf-8')
#对txt进行遍历
for line in file_one:
dic_one=json.loads(line)
d_two.append(dic_one)
df_two=pd.DataFrame(d_two)
方法二:保存数据源的时候,格式写为一个对象
文件应保存为如下:
{"cates":[
{"viewNum":100.0,"printNum":0.0,"totalNum":1000.0,"displayName":"公号投放历史"},
{"viewNum":200.0,"printNum":0.0,"totalNum":2143.0,"displayName":"市场/子渠道"}
]}
下面上这种类型如何处理的代码:
import pandas as pd
import json
file = open(r"D:\2019-04-14-13_50_40_414.txt",'r',encoding='utf-8')
js = file.read()
dic = json.loads(js)
d = []
for key in dic.keys():
if key == 'cates':
for i in dic['cates']:
d.append(i)
df = pd.DataFrame(d)
好了,这里是我目前遇到解决这类方法的两种思路。