린스토리

[Error] "TypeError: decoding str is not supported" 해결 본문

Python/Python

[Error] "TypeError: decoding str is not supported" 해결

rinaaaLee 2022. 8. 2. 11:45

코드 실행을 하다가 str 변환 구문에서 에러가 났다. 

왜 생긴 에러인지, 어떻게 해결하는지 알아보자.


에러가 나온 부분의 코드는 다음과 같았다.

user = self.train_user_df['user_id'][row]  # type: str
hardware_label.setText(str(train_setting_log[str(user)]['hardware']))

user의 type을 print했을 때, <class 'str'> 로 나온다. 

두번째 줄의 코드에서 보면, dictionary의 키로 user를 넘기는데, 이미 str인 타입에 또 한 번 str로 감싼 것을 볼 수 있다. 

 

<class 'str'>은 다음과 같이 정의된다. 

기본적으로 str로 형변환을 할 때, encoding default로 'utf-8'이 적용된다. 

그런데 이미 타입이 str인 것에 str로 형변환을 시키면, 위와 같은 에러가 나오게 되는 것이다. 

 

그래서 해결은, 그냥 str 변환을 빼면 된다. 

user = self.train_user_df['user_id'][row]  # type: str
hardware_label.setText(train_setting_log[user]['hardware'])

이렇게 변수의 type을 미리 확인하고 적절하게 형변환을 적용해야 한다는 걸 알았다. 

Comments