Python 读写json文件

Python 读写json文件

本文旨在记录将读入url后的json文件转为python格式从而进行分析

  • 读入url,保存json文件
import urllib, json
response = urllib.urlopen(url)
data = json.loads(response.read())
  • json切片
def dict_slice(adict, start, end):
    keys = adict.keys()
    dict_slice = {}
    for k in keys[start:end]:
        dict_slice[k] = adict[k]
    return dict_slice

result = dict_slice(data, 1, 2)
result = result[u'rows'][0][u'elements'][0][u'distance'][u'text']#取出json内部分内容
  • json格式转为python格式
distance = json.dumps(result)#转为python格式

实例代码

该代码主要实现计算两个城市之间的距离,利用google distance matrix的api,更多应用示例见以下链接:

https://developers.google.com/maps/documentation/distance-matrix/start

该代码根据读取xls文件中的相应城市地址,从而进行计算并输出所有的距离

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Sun May 21 22:49:59 2017

@author: chenjingwen
"""
import xlrd
import numpy as np
import urllib, json
import csv

def dict_slice(adict, start, end):
    keys = adict.keys()
    dict_slice = {}
    for k in keys[start:end]:
        dict_slice[k] = adict[k]
    return dict_slice

filed = xlrd.open_workbook('Distance1.xls') # 打开xls文件
table = filed.sheets()[0]
nrows = table.nrows

destination=[]  
originations = []  
#将table中第一行的数据读取并添加到data_list中
for i in range(nrows):
    dest = table.row_values(i)[0].encode("utf-8")
    origin = table.row_values(i)[1].encode("utf-8")
    destination.append(dest)
    originations.append(origin)

website0 = 'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins='
#origins = 'Washington,DC'
website1 = '&destinations='
#destination = 'New,York,City,NY'
website2 = '&key=AIzaSyD1SqEGEsCe3iaktwXALoSDx3b4JiDA0Dw'#输入api

result = []
for i in range(444,nrows):
    url = website0 + originations[i] + website1 + destination[i] + website2

    response = urllib.urlopen(url)
    data = json.loads(response.read())
    res = dict_slice(data, 1, 2)
    res = res[u'rows'][0][u'elements'][0][u'distance'][u'text']
    distance = json.dumps(res)
    result.append([i,distance])


with open('destination_result.csv','w') as f: 
#this will save the results of all frames,you can just uncomment it
        f_csv = csv.writer(f)
        f_csv.writerows(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值