从r.text获取Numbers

时间:2015-02-26 17:31:57

标签: python text

我正在尝试从代码中获取数字:

import requests
import re

payload = {'cityId':3969, 'lbDistricts':599, 'criter':149,'startdate':'2003-01','cmd':'result','areaCode':18439}
url = "https://www.garantimortgage.com/apps/Socket/Webservice.ashx"
r = requests.post(url, data=payload)


print r.text

从这里结果返回下面,我需要单独的日期和值,因为我将尝试构建一个表。但我无法转换它们。对不起,长篇文章

>{ "output": {"ErrorMesg": null, "resultset": {"record": {"areaid": "599",  "data": [ {"Date": "2003-01", "Value": "43.99" }, {"Date": "2003-02", "Value": "44.19" }, {"Date": "2003-03", "Value": "44.67" }, {"Date": "2003-04", "Value": "45.19" }, {"Date": "2003-05", "Value": "45.98" }, {"Date": "2003-06", "Value": "46.82" }, {"Date": "2003-07", "Value": "47.68" }, {"Date": "2003-08", "Value": "48.59" }, {"Date": "2003-09", "Value": "49.7" }, {"Date": "2003-10", "Value": ...

3 个答案:

答案 0 :(得分:1)

它并不完全清楚你在问什么,但无论如何我都会试一试。

假设您正在尝试提取"日期"和"价值"你可以这样做:

import json # since this thing seems to be returning json back to you

data = json.loads(r.text) # turn it into a python dict
#loop through all the data you care about 
for record in data["output"]["resultset"]["record"]["data"]: 
    print record["Date"], record["Value"]

答案 1 :(得分:1)

您通过网络请求检索的数据采用json格式。

  1. 首先需要将json数据转换为python理解的数据结构。 python json library会为您服务。
  2. 将json数据转换为嵌套字典结构后,您需要浏览数据并检索(date, value)字典对。
  3. 然后你需要丢弃密钥并获取值。结果数据应该是数据值元组列表
  4. 示例代码

    import json
    data = json.loads(r.text)
    data = map(dict.values, data[u'output'][u'resultset'][u'record'][u'data'])
    for row in data:
        print '{:10}{:10}'.format(*row)
    

    示例输出

    2003-01   43.99     
    2003-02   44.19     
    2003-03   44.67     
    2003-04   45.19     
    2003-05   45.98
    ...............
    

答案 2 :(得分:0)

那就是json所以使用r.json()而不是r.text并使用密钥访问您需要的任何信息:

r = requests.post(url, data=payload)

for d in r.json()["output"]['resultset']['record']["data"]:
    print(d)

{u'Date': u'2003-01', u'Value': u'43.99'}
{u'Date': u'2003-02', u'Value': u'44.19'}
{u'Date': u'2003-03', u'Value': u'44.67'}
{u'Date': u'2003-04', u'Value': u'45.19'}
{u'Date': u'2003-05', u'Value': u'45.98'}
{u'Date': u'2003-06', u'Value': u'46.82'}
{u'Date': u'2003-07', u'Value': u'47.68'}
{u'Date': u'2003-08', u'Value': u'48.59'}
{u'Date': u'2003-09', u'Value': u'49.7'}
{u'Date': u'2003-10', u'Value': u'50.7'}
{u'Date': u'2003-11', u'Value': u'51.36'}
{u'Date': u'2003-12', u'Value': u'52.16'}
{u'Date': u'2004-01', u'Value': u'53.12'}
{u'Date': u'2004-02', u'Value': u'54.17'}
{u'Date': u'2004-03', u'Value': u'54.86'}
{u'Date': u'2004-04', u'Value': u'55.58'}
{u'Date': u'2004-05', u'Value': u'56.55'}
{u'Date': u'2004-06', u'Value': u'57.69'}
{u'Date': u'2004-07', u'Value': u'58.89'}
{u'Date': u'2004-08', u'Value': u'60.01'}
{u'Date': u'2004-09', u'Value': u'61.16'}
{u'Date': u'2004-10', u'Value': u'62.03'}
{u'Date': u'2004-11', u'Value': u'62.72'}
{u'Date': u'2004-12', u'Value': u'63.5'}
{u'Date': u'2005-01', u'Value': u'64.47'}
{u'Date': u'2005-02', u'Value': u'65.46'}
.......................................