스택큐힙리스트

왜 "TypeError: string indices must be integers"가 보이나요? 본문

카테고리 없음

왜 "TypeError: string indices must be integers"가 보이나요?

스택큐힙리스트 2023. 4. 15. 07:45
반응형

저는 파이썬 배우기와 함께 GitHub 이슈들을 읽기 쉬운 형태로 만들고자 노력하고 있습니다. How can I convert JSON to CSV? 에서 제공한 조언을 사용하여 다음과 같은 결과물을 도출했습니다:

import json

import csv

f = open('issues.json')

data = json.load(f)

f.close()

f = open(issues.csv, wb+)

csv_file = csv.writer(f)

csv_file.writerow([gravatar_id, position, number, votes, created_at, comments, body, title, updated_at, html_url, user, labels, state])

for item in data:

csv_file.writerow([item[gravatar_id], item[position], item[number], item[votes], item[created_at], item[comments], item[body], item[title], item[updated_at], item[html_url], item[user], item[labels], item[state]])

issues.json은 내 GitHub 이슈를 포함한 JSON 파일입니다. 그 파일을 실행하려고 하면, 다음과 같은 오류가 나타납니다.

File foo.py, line 14, in

csv_file.writerow([item[gravatar_id], item[position], item[number], item[votes], item[created_at], item[comments], item[body], item[title], item[updated_at], item[html_url], item[user], item[labels], item[state]])

TypeError: string indices must be integers

여기서 뭐가 빠졌을까요? 문자열 인덱스는 무엇인가요? 이것을 작동하게 만드는 게 어렵겠지만, 일단은 그냥 작동되면 정말 좋겠습니다!

애정합니다 (I love you), it conveys a completely different message.

for item in data:

print item

내가 이해한 것은 문제인데, 더 기본적인 것을 잘못하고 있나봐요. 이것은 내 JSON 컨텐츠 일부입니다:

{issues: [{gravatar_id: 44230311a3dcd684b6c5f81bf2ec9f60, position: 2.0, number: 263, votes: 0, created_at: 2010/09/17 16:06:50 -0700, comments: 11, body: Add missing paging (Older>>) links...

data를 출력하면 매우 이상하게 꼬이는 것처럼 보입니다.

{u'issues': [{u'body': u'Add missing paging (Older>>) lin...

답변 1

변수 item은 문자열입니다. 인덱스는 다음과 같습니다:

>>> mystring = 'helloworld'

>>> print mystring[0]

'h'

위의 예제는 문자열의 0 인덱스를 사용하여 첫 번째 문자를 참조합니다.

문자열은 문자 딕셔너리처럼 문자 인덱스를 가질 수 없습니다. 그래서 이렇게 사용할 수 없습니다.

>>> mystring = 'helloworld'

>>> print mystring['stringindex']

TypeError: string indices must be integers

답변 2

TypeError: string indices must be integers는 파이썬에서 자주 발생하는 오류 중 하나입니다. 이 오류는 보통 문자열과 같은 객체를 처리할 때 발생합니다. 이 오류는 일반적으로 문자열의 인덱스에 정수가 아닌 값이 포함되어 있을 때 발생합니다.

이 오류는 문자열을 다룰 때 매우 일반적으로 발생합니다. 실제로 문자열은 매우 중요한 데이터 타입으로 사용되고 있으며, 이 오류는 이러한 데이터를 처리하는 데 많은 도움이 됩니다.

오류의 원인을 해결하는 방법은 매우 간단합니다. 일반적으로 오류 메시지에서 실제 인덱스 위치가 나와 있으며, 이 위치에서 정수값을 사용하도록 변경하면 해결됩니다.

또한, 이 오류가 발생하는 경우 일반적으로 문자열 데이터의 타입을 확인하는 것이 좋습니다. 데이터 타입을 잘못 지정한 경우 이러한 오류가 발생할 가능성이 높습니다.

따라서, 이러한 오류를 피하려면 프로그래밍을 할 때 문자열 인덱스에는 정수값을 사용해야 하며, 데이터 타입을 정확하게 지정해야 합니다. 이를 기반으로 코드를 작성하면 유지보수와 디버깅이 더 쉬워지며, 더 나은 사용자 경험을 제공할 수 있습니다.

반응형
Comments