문제상황:
에러가 발생한 코드와 이에 대한 설명:
def process_data(data, output_file):
processed_data = ""
for i, line in enumerate(data):
processed_line = str(i) + ": " + line.strip() + " (Length: " + len(line) + ")\n"
processed_data += processed_line
with open(output_file, "w") as f:
f.write(processed_data)
input_data = ["Hello, World!", "I love Python!"]
output_file = "output.txt"
process_data(input_data, output_file)
위 코드는 주어진 데이터를 처리한 후 결과를 파일에 저장하는 함수 process_data를 포함하고 있습니다. 이 함수는 데이터의 각 항목 앞에 인덱스를 붙이고, 끝에 해당 항목의 길이를 출력합니다. 그러나, 이 코드를 실행하면 다음과 같은 에러가 발생합니다.
에러로그 내용:
TypeError: can only concatenate str (not "int") to str
해결방법:
에러가 수정된 코드+ 수정된 부분에 대한 주석:
def process_data(data, output_file):
processed_data = ""
for i, line in enumerate(data):
processed_line = str(i) + ": " + line.strip() + " (Length: " + str(len(line)) + ")\n" # 수정된 부분
processed_data += processed_line
with open(output_file, "w") as f:
f.write(processed_data)
input_data = ["Hello, World!", "I love Python!"]
output_file = "output.txt"
process_data(input_data, output_file)
위 코드에서 수정된 부분은 len(line)을 문자열로 변환하는 str(len(line))입니다.
원인분석:
에러 발생 원인에 대한 자세한 설명:
이 에러는 문자열과 정수를 함께 연결(concatenate)하려고 할 때 발생합니다. 파이썬에서는 서로 다른 타입의 데이터를 직접 연결할 수 없기 때문에, TypeError가 발생하게 됩니다. 이 문제를 해결하기 위해 정수를 문자열로 변환하여 문자열과 문자열을 연결하도록 수정했습니다.
참고링크:
- 파이썬 공식문서: TypeError
728x90