Por que "TypeError: os índices de string devem ser inteiros" com dados de problemas do GitHub?
Ao converter dados de problemas do GitHub do formato JSON para CSV usando Python, os programadores podem encontrar o erro "TypeError: os índices de string devem ser inteiros". Para resolver esse problema, é crucial entender a natureza do erro e fazer os ajustes necessários no código.
A mensagem de erro indica uma incompatibilidade entre os índices baseados em números inteiros esperados e os índices de string usados no código. Ao trabalhar com strings, é válido acessar caracteres específicos usando índices inteiros. No entanto, esta abordagem não é aplicável a outros objetos, como dicionários ou listas.
O exame do código fornecido revela que o problema está na seguinte linha:
csv_file.writerow([item["gravatar_id"], item["position"], item["number"]]), item["position"], item["number"]])Aqui, item é um dicionário e suas chaves, ou seja, "gravatar_id", "posição" e "número" representam os valores que estão sendo gravados no arquivo CSV. O erro ocorre porque os dicionários usam chaves de string para acessar seus valores, não índices inteiros.Para corrigir esse problema, é essencial modificar o código para usar índices de string em vez de índices inteiros. O código corrigido deve ficar assim:
csv_file.writerow([item["gravatar_id"], str(item["position"]), str(item["number"])])csv_file.writerow([item["gravatar_id"], str(item["position"]), str(item["number"])])
Ao converter os valores numéricos em strings, o código pode gravar os dados com êxito no arquivo CSV sem encontrar o "TypeError: os índices de string devem ser inteiros" erro.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3