字符串索引必须是整数,同时通过json解析

蓝色的

所以,我试图抓住"rate_float",但每当运行响应时,我都会得到 TypeError。

我很确定我的 TypeError 实际上是在尝试循环时立即发生的"bpi"

我最初认为这是因为包含在一个字符串中,但它是一个浮点数,这仍然是导致问题的原因,还是我没有正确解析 json 以获取"USD",并获取值对"rate_float"

正确的代码应该只输出 USD 的 rate_float。

错误信息:

    Traceback (most recent call last):
  File "C:\Users\Blue\python_practice\problem_sets\Bitcoin_Price", line 37, in <module>
    main()
  File "C:\Users\Blue\python_practice\problem_sets\Bitcoin_Price", line 7, in main
    bitcoin_price = bitcoin()
  File "C:\Users\Blue\python_practice\problem_sets\Bitcoin_Price", line 34, in bitcoin
    print(p["rate_float"])
TypeError: string indices must be integers

全套代码:

import requests
import json
import sys


def main():
    bitcoin_price = bitcoin()
    print(bitcoin_price)
    try:
        if float(args()):
            print(args())
            return True
    except ValueError:
        print("Invalid Amount / Not a float or digit")
        sys.exit()


def args():
    arg = [float(x) for x in sys.argv[1:]]
    user_arg = arg.pop(0)
    return user_arg


def bitcoin():
    response = requests.get(
        "https://api.coindesk.com/v1/bpi/currentprice.json")

    print(json.dumps(response.json(), indent=2))

    usd_price = response.json()

    for p in usd_price["bpi"]:
        print(p["rate_float"])


main()

json:

    {
  "time": {
    "updated": "Jun 12, 2022 23:29:00 UTC",
    "updatedISO": "2022-06-12T23:29:00+00:00",
    "updateduk": "Jun 13, 2022 at 00:29 BST"
  },
  "disclaimer": "This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org",
  "chartName": "Bitcoin",
  "bpi": {
    "USD": {
      "code": "USD",
      "symbol": "&#36;",
      "rate": "27,091.6395",
      "description": "United States Dollar",
      "rate_float": 27091.6395
    },
    "GBP": {
      "code": "GBP",
      "symbol": "&pound;",
      "rate": "21,996.2168",
      "description": "British Pound Sterling",
      "rate_float": 21996.2168
    },
    "EUR": {
      "code": "EUR",
      "symbol": "&euro;",
      "rate": "25,752.4997",
      "description": "Euro",
      "rate_float": 25752.4997
    }
  }
}
拉斐尔克

问题就在这里

for p in usd_price["bpi"]:
    print(p["rate_float"])

当您遍历字典时,您会遍历它的键。这样,p是一个字符串(例如USDGBP等)。

考虑使用以下方法迭代键和值items()

for currency, val in usd_price["bpi"].items():
    print(currency, val["rate_float"])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeError:使用Python解析JSON时,字符串索引必须是整数?

解析JSON时,字符串索引必须为整数-python

Robot Framework - 类型错误:解析 Json 时字符串索引必须是整数

TypeError:使用Python解析Json时,字符串索引必须是整数错误

python pandas - 解析 JSON 时出现类型错误:字符串索引必须是整数

使用 json 数据解析错误:字符串索引必须是整数

类型错误:字符串索引必须是整数,而不是带有 JSON 解析的 str

解析 JSON 时出现“字符串索引必须是整数”错误

类型错误:字符串索引必须是带 JSON 的整数

JSON字符串索引必须为整数

TypeError:字符串索引必须是整数-json

TypeError:字符串索引必须是整数 JSON 文件

嵌套的 JSON,字符串索引必须是整数

字符串索引必须是整数json python

json.loads TypeError:字符串索引必须是整数

JSON:TypeError: 字符串索引必须是整数

Python - 读取 JSON - TypeError:字符串索引必须是整数

JSON 注释错误“字符串索引必须是整数”

字符串索引必须是整数-它们是

字符串索引必须是整数 - Django

字符串索引必须是整数geojson

错误:字符串索引必须是整数

读取JSON字符串| TypeError:字符串索引必须是整数

Python - XML 解析/导入过程中断,字符串索引必须是整数

具有子字符串的API JSON字典返回TypeError:字符串索引必须为整数

处理使用'http'下载的JSON时发生错误-TypeError:字符串索引必须为整数

类型错误:字符串索引必须是复杂的 json 数组中的整数

Django序列化器从帖子访问json数据(字符串索引必须为整数)

TypeError字符串索引必须为整数-python json dict