将API数据转换为str/int格式python的最简单方法

2024-04-26 05:35:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经阅读了许多文章和帖子,连接到一个api,然后将其格式化为int/str,但我确实设法使可能是最长的迂回的方式有史以来它真正丑陋请有人告诉我最短最有效的方式来完成下面的代码任何建议将不胜感激,期待着打印出“eos”的基本在str格式和“价格”为int谢谢!你知道吗

import urllib
import json

import pandas as pd
import numpy as np

import requests
r = requests.get('https://api.coinmarketcap.com/v1/ticker/eos/')

with open('events.csv','w') as fd:
    fd.write(r.text)

data = pd.read_csv('events.csv', names=['Choose One'])

i = data.iloc[[6], [0]]

a = str(i)

name,price = a.split(":")

string = price[2:-1]

print(string)

Tags: csvimportapidatastringas方式events
2条回答

使用pandasread_json将文件读入数据帧更简单,read\u json会自动将apt数据类型分配给每一列,然后使用列选择来选择'name'、'price\u usd'列(当然在本例中只有一行,但相同的代码可以用于多行)

import pandas as pd

df = pd.read_json('https://api.coinmarketcap.com/v1/ticker/eos/')

print(df[['name','price_usd']].apply(lambda row:'{}: {:.0f}'.format(ro
w['name'],row['price_usd']),axis=1))  

在format语句中使用.0f将显示price\U usd值的整数部分(四舍五入),因此输出将是。你知道吗

0    EOS: 9

或者,使用round函数将对浮点值进行舍入 i、 e

In [34]: import pandas as pd
    ...: df = pd.read_json('https://api.coinmarketcap.com/v1/ticker/eos/')
    ...: print(df[['name','price_usd']].apply(lambda row:'{}: {:}'.format(row['n
    ...: ame'],round(row['price_usd'],2)),axis=1))
    ...: 
    ...: 
0    EOS: 8.99

数据类型:对象

只需使用json.loads(r.text)或更简单的直接r.json()。你知道吗

比方说,现在api返回以下数据:

[
    {
        "id": "eos", 
        "name": "EOS", 
        "symbol": "EOS", 
        "rank": "9", 
        "price_usd": "9.31992", 
        "price_btc": "0.00106154", 
        "24h_volume_usd": "596467000.0", 
        "market_cap_usd": "6034993504.0", 
        "available_supply": "647537050.0", 
        "total_supply": "900000000.0", 
        "max_supply": "1000000000.0", 
        "percent_change_1h": "1.3", 
        "percent_change_24h": "-6.81", 
        "percent_change_7d": "-36.4", 
        "last_updated": "1517755757"
    }
]

如果使用r.json(),则将其作为一个json,否则用data = json.loads(r.text)加载它并用df = pd.DataFrame(data)将其保存到一个pandas数据帧中,该数据帧如下所示:

In [15]: df
Out[15]:
  24h_volume_usd available_supply   id last_updated market_cap_usd    max_supply name percent_change_1h percent_change_24h percent_change_7d   price_btc price_usd rank symbol total_supply
0    596467000.0      647537050.0  eos   1517755757   6034993504.0  1000000000.0  EOS               1.3              -6.81             -36.4  0.00106154   9.31992    9    EOS  900000000.0

使用索引访问数据:

In [8]: df[['name', 'price_usd']]
Out[8]:
  name price_usd
0  EOS   9.29186

或用于打印:

In [18]: print df.loc[0, 'name'], ': ', df.loc[0, 'price_usd']
EOS :  9.31992

相关问题 更多 >