• json.load():是从文件中加载内容并转换成json;
• json.loads():是将字符串转换成json。
大量数据,里面有多行多列,出现类似标题报错
raise JSONDecodeError(“Extra data”, s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 104)(参考https://blog.youkuaiyun.com/u011318077/article/details/88550775
读取CSV文件
import csv
from typing import List
csvfile = open('data-text.csv', 'rt') # 将data-text.csv传入open函数
# rb参数代表了以只读和二进制文件的模式打开,以二进制打开,则在双系统均能运行
# 还有w代表写入,wb代表以二进制写入open函数读写默认采用t方式,所以如果省略不写,则默认为t。即rt、wt、at、xt等价于r、w、a、x
reader = csv.DictReader(csvfile) # reader函数作用是将打开的文件作为csv来读取
#DictReader是将记录变成字典,字典的键来自于csv的第一行
for row in reader: # 打印每一行的数据
print(row)
读取excel文件
首先使用库xlrd,用pip命令安装该库
(xlwt库用来向excel中写入数据)
然后使用xlrd中的xlrd.open_workbook进行文件读取
之后如需定到某个sheet文件,可先读取excel所对应的sheet名
for sheet in book.sheets():
print sheet.name
之后若需要读取某个具体的sheet文件:
sheet = excel.sheet_by_name(‘Table 9’) table9相当于sheet名
nrows的方法,我们将用这个方法来遍历所有行
sheet.nrows
Range()函数接收一个数字作为参数,输出一个那么多元素组成的列表
range(3)=0,1,2,rang(1,4)返回1,2,3
for i in range(sheet.nrows):
print sheet.row_values(i)
上述操作打印来每行所对应的数据
row=每一行的数据
然后从row中提取每个单元的数据
利用for cell in row
实例:
从who的文件中整理出不同国家所对应的儿童劳工和提前生育人数。
import xlrd
import pprint
from xlrd.timemachine import xrange
excel1=xlrd.open_workbook('SOWC 2014 Stat Tables_Table 9.xlsx')
data={}
#for sheet in excel.sheets():
#print(sheet.name)#可获得excel所包含的sheet,名
sheet=excel1.sheet_by_name('Table 9 ')#读取某个sheet
#for i in range(sheet.nrows):#nrows可知道sheet中有多少行
# print(sheet.row_values(i))#读取具体单元格
# row=sheet.row_values(i)
# for cell in row:
# print(cell)
for i in xrange(14,sheet.nrows):#从14行开始读取
row=sheet.row_values(i)#取每一行的单元值
coutry=row[1]#取国家所在的单元格
data[coutry]={#为data字典赋值
'child_labor':{
'total':[row[4],row[5]],
'male':[row[6],row[7]],
'female':[row[8],row[9]],
},
'chid_marrage':{
'married_by_15':[row[10],row[11]],
'married_by_18':[row[12],row[13]],
}
}
#跳出循环的条件
if coutry=='Zimbabwe':
break
#pprint.pprint(data)
print(dir(excel1))
字典的经典案例
data={}
data[coutry]={
'child_labor':{
'total':[row[4],row[5]],
'male':[row[6],row[7]],
'female':[row[8],row[9]],
},
'chid_marrage':{
'married_by_15':[row[10],row[11]],
'married_by_18':[row[12],row[13]],
}
表会用到sheet_by_name
而对于sheet可以用函数nrows()、row.values