如何使文件中的数据转为python可读取的数据?

• 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.csdn.net/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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值