Python中如何从嵌套JSON提取比特币USD当前汇率
如何从CoinDesk API的嵌套JSON中提取比特币USD价格并计算对应金额
先看你提供的CoinDesk JSON结构,比特币USD价格的嵌套路径是:bpi -> USD -> rate(带格式的字符串)或rate_float(浮点数值,适合计算)。
先修正你代码里的两个问题:
- 参数验证部分,直接用
float(sys.argv[1])会在输入非数字时抛出异常,用try-except捕获错误更健壮 - 缺少从嵌套字典中提取价格的核心逻辑
下面是完整的修正代码:
import sys import requests # 验证输入参数 if len(sys.argv) == 1: sys.exit("missing argument!") try: bitcoin_amount = float(sys.argv[1]) except ValueError: sys.exit("argument is not number") # 请求API数据 response = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json") data = response.json() # 提取USD价格(两种方式可选) usd_rate_formatted = data['bpi']['USD']['rate'] # 带千分位逗号的字符串,例如"23,960.8828" usd_rate_numeric = data['bpi']['USD']['rate_float'] # 浮点数值,例如23960.8828 # 计算对应金额(根据输入的比特币数量) total_value = bitcoin_amount * usd_rate_numeric # 打印结果 print(f"当前比特币USD价格: {usd_rate_formatted}") print(f"{bitcoin_amount} 比特币对应USD价值: ${total_value:,.4f}")
关键说明:
- 嵌套字典取值直接通过链式键访问:
data['bpi']['USD']['rate_float'],这是提取多层嵌套JSON数据最直接的方式 rate_float比rate更适合计算场景,因为它已经是数值类型,无需处理千分位逗号- 用
try-except捕获ValueError可以避免非数字输入导致的程序崩溃
内容的提问来源于stack exchange,提问作者sahil _056
相关产品推荐
相关产品推荐

