Тип Error-String индексы должны быть целыми числами - PullRequest
0 голосов
/ 06 января 2020

Я получаю ошибку типа при переборе словаря. Тип Error-String индексы должны быть целыми числами

data = {"GetEventHeadlines_Response_1":{"EventHeadlines":{"Headline":[{"CountryCode":"US","EventType":"EarningsCallsAndPresentations","Duration":{"EndDateTime":"2019-12-30T12:00:00","EndQualifier":"None","IsEstimate":false,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"EventId":12969284,"LastUpdate":"2020-01-02T19:06:09.267","LiveDialIn":{"Duration":{"EndDateTime":"2019-12-30T12:00:00","EndQualifier":"None","IsEstimate":false,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"Password":"6378226","PhoneNumber":"+1-845-675-0437","Status":"Available"},"LiveWebcast":{"Type":"ThirdParty","Duration":{"EndDateTime":"2019-12-30T14:00:00","EndQualifier":"DateTime","IsEstimate":false,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"WebcastId":"840B9947-C69D-40E5-AF4F-4F35B1FF069C","Provider":"WindowsMedia","Url":null},"Name":"Q3 2019 Nio Inc Earnings Call","ReplayDialIn":{"Duration":{"EndDateTime":"2020-01-07T12:59:00","EndQualifier":"DateTime","IsEstimate":false,"StartDateTime":"2019-12-30T15:00:00","StartQualifier":"DateTime"},"Password":"6378226","PhoneNumber":"+1-646-254-3697","Status":"Available"},"ReplayWebcast":{"Type":"ThirdParty","Duration":{"EndDateTime":"2020-01-30T12:00:00","EndQualifier":"DateOnly","IsEstimate":false,"StartDateTime":"2019-12-30T14:00:00","StartQualifier":"DateTime"},"WebcastId":"0816103B-4559-4816-BE2A-BC1B5612486B","Provider":"WindowsMedia","Url":null},"Transcript":{"Status":"Final","TranscriptId":"8874A5B3-06BC-4863-9890-9F6775E1A219","DeliveryType":"Live","Locale":"en-US"},"Organization":{"Name":"Nio Inc","Symbols":{"Symbol":[{"Type":"RIC","Value":"NIO.N"}]}},"RsvpRequired":false}]},"PaginationResult":{"PageNumber":1,"RecordsOnPage":1,"RecordsPerPage":100,"TotalRecords":1}}}

Doc_details= dict()

 for item in data['GetEventHeadlines_Response_1']['EventHeadlines']['Headline']:
 name= item['Name']
 docid=item['Transcript']['TranscriptId']
 Doc_details[name]=docid
print(Doc_details)

for key, value in Doc_details.items():
 print(key,value)

error:

TypeError                                 Traceback (most recent call last)
<ipython-input-165-4ad75716058a> in <module>()
  1 Doc_details= {}
  2 
----> 3 for item in data['GetEventHeadlines_Response_1']['EventHeadlines']['Headline']:
  4     name= item['Name']
  5     docid=item['Transcript']['TranscriptId']

TypeError: string indices must be integers

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Преобразуйте ваш false с False, и он будет работать. Я использовал другой метод, который принимает это как необработанную строку, а затем преобразовывает ее в JSON. Таким образом, фактические логические значения JSON будут преобразованы в Python.

import json
data = r'''{"GetEventHeadlines_Response_1":{"EventHeadlines":{"Headline":[{"CountryCode":"US","EventType":"EarningsCallsAndPresentations","Duration":{"EndDateTime":"2019-12-30T12:00:00","EndQualifier":"None","IsEstimate":false,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"EventId":12969284,"LastUpdate":"2020-01-02T19:06:09.267","LiveDialIn":{"Duration":{"EndDateTime":"2019-12-30T12:00:00","EndQualifier":"None","IsEstimate":false,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"Password":"6378226","PhoneNumber":"+1-845-675-0437","Status":"Available"},"LiveWebcast":{"Type":"ThirdParty","Duration":{"EndDateTime":"2019-12-30T14:00:00","EndQualifier":"DateTime","IsEstimate":false,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"WebcastId":"840B9947-C69D-40E5-AF4F-4F35B1FF069C","Provider":"WindowsMedia","Url":null},"Name":"Q3 2019 Nio Inc Earnings Call","ReplayDialIn":{"Duration":{"EndDateTime":"2020-01-07T12:59:00","EndQualifier":"DateTime","IsEstimate":false,"StartDateTime":"2019-12-30T15:00:00","StartQualifier":"DateTime"},"Password":"6378226","PhoneNumber":"+1-646-254-3697","Status":"Available"},"ReplayWebcast":{"Type":"ThirdParty","Duration":{"EndDateTime":"2020-01-30T12:00:00","EndQualifier":"DateOnly","IsEstimate":false,"StartDateTime":"2019-12-30T14:00:00","StartQualifier":"DateTime"},"WebcastId":"0816103B-4559-4816-BE2A-BC1B5612486B","Provider":"WindowsMedia","Url":null},"Transcript":{"Status":"Final","TranscriptId":"8874A5B3-06BC-4863-9890-9F6775E1A219","DeliveryType":"Live","Locale":"en-US"},"Organization":{"Name":"Nio Inc","Symbols":{"Symbol":[{"Type":"RIC","Value":"NIO.N"}]}},"RsvpRequired":false}]},"PaginationResult":{"PageNumber":1,"RecordsOnPage":1,"RecordsPerPage":100,"TotalRecords":1}}}'''
data = json.loads(data)

Doc_details= dict()

for item in data['GetEventHeadlines_Response_1']['EventHeadlines']['Headline']:
    name= item['Name']
    docid=item['Transcript']['TranscriptId']
    Doc_details[name]=docid

print(Doc_details)

for key, value in Doc_details.items():
    print(key,value)
1 голос
/ 06 января 2020

Я попытался скопировать код и протестировать его, но не получил ошибку. Я действительно отредактировал пару значений, например, ложь в False, но это все. Результат, который я получил, был следующим:

{'Q3 2019 Nio In c Earnings Call': '8874A5B3-06B C -4863-9890-9F6775E1A219'}

Q3 2019 Nio In c Earnings Call 8874A5B3-06B C -4863-9890-9F6775E1A219

Вот код на случай, если я его неправильно скопировал.

data = {"GetEventHeadlines_Response_1":{"EventHeadlines":{"Headline":[{"CountryCode":"US","EventType":"EarningsCallsAndPresentations","Duration":{"EndDateTime":"2019-12-30T12:00:00","EndQualifier":"None","IsEstimate":False,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"EventId":12969284,"LastUpdate":"2020-01-02T19:06:09.267","LiveDialIn":{"Duration":{"EndDateTime":"2019-12-30T12:00:00","EndQualifier":"None","IsEstimate":False,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"Password":"6378226","PhoneNumber":"+1-845-675-0437","Status":"Available"},"LiveWebcast":{"Type":"ThirdParty","Duration":{"EndDateTime":"2019-12-30T14:00:00","EndQualifier":"DateTime","IsEstimate":False,"StartDateTime":"2019-12-30T12:00:00","StartQualifier":"DateTime"},"WebcastId":"840B9947-C69D-40E5-AF4F-4F35B1FF069C","Provider":"WindowsMedia"},"Name":"Q3 2019 Nio Inc Earnings Call","ReplayDialIn":{"Duration":{"EndDateTime":"2020-01-07T12:59:00","EndQualifier":"DateTime","IsEstimate":False,"StartDateTime":"2019-12-30T15:00:00","StartQualifier":"DateTime"},"Password":"6378226","PhoneNumber":"+1-646-254-3697","Status":"Available"},"ReplayWebcast":{"Type":"ThirdParty","Duration":{"EndDateTime":"2020-01-30T12:00:00","EndQualifier":"DateOnly","IsEstimate":False,"StartDateTime":"2019-12-30T14:00:00","StartQualifier":"DateTime"},"WebcastId":"0816103B-4559-4816-BE2A-BC1B5612486B","Provider":"WindowsMedia"},"Transcript":{"Status":"Final","TranscriptId":"8874A5B3-06BC-4863-9890-9F6775E1A219","DeliveryType":"Live","Locale":"en-US"},"Organization":{"Name":"Nio Inc","Symbols":{"Symbol":[{"Type":"RIC","Value":"NIO.N"}]}},"RsvpRequired":False}]},"PaginationResult":{"PageNumber":1,"RecordsOnPage":1,"RecordsPerPage":100,"TotalRecords":1}}} 

Doc_details= {}

for item in data['GetEventHeadlines_Response_1']['EventHeadlines']['Headline']:
    name= item['Name']
    docid=item['Transcript']['TranscriptId']
    Doc_details[name]=docid
print(Doc_details)

for key, value in Doc_details.items():
    print(key,value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...