簡體   English   中英

TypeError:字符串索引必須是帶有.json()字典的整數

[英]TypeError: string indices must be integers with .json() dictionary

我正在嘗試訪問字典鍵和值,但執行TypeError:這樣做時字符串索引必須是整數錯誤。

我正在使用以下代碼。

def function():
    EMAILS_FOR_ISSUES = 'https://github.com/api/v3/users/JimmyBuffet'
    resource = requests.get(EMAILS_FOR_ISSUES, auth=AUTH)
    if not resource.status_code == 200:
        raise Exception(resource.status_code)

    print(type(resource.json()))
    print(resource.json())
    for x in resource.json():
        print(x)
        print(x[0])
        print(x[4])
        user_email = x['email']
        print(user_email)
return

我得到的響應.. *注意:我在這里格式化dict輸出以提高可讀性。

<type 'dict'>
{
    u'public_repos': 1, 
    u'site_admin': False,  
    u'gravatar_id': u'', 
    u'hireable': None, 
    u'id': 6048,  
    u'email': u'jbuffet@xyzxyz.com'
}
public_repos
p
i
Traceback (most recent call last):
  File "retrieve_old_issues.py", line 122, in <module>
    function()
  File "retrieve_old_issues.py", line 58, in function
    user_email = x['email']
TypeError: string indices must be integers

目的是獲取電子郵件。 我認為鍵前面的unicode字符也弄亂了一些東西,但是還沒有找到任何東西。 為什么這不起作用?

for x in resource.json():

在這里,您要做的是遍歷字典中的每個條目並將鍵分配給x。 因此,例如,在for循環的第一次迭代中,

x = "public_repo"

這就是為什么您看到為x [0]和x [4]打印“ p”和“ i”的原因,因為它們分別是字符串“ public_repo”的第0和第4位。

相反,您要做的是將resource.json()分配給變量,然后簡單地將其索引。 例如,

dict = resource.json()
print(dict["email"])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM