본문 바로가기

Python

[python] replace() argument 2 must be str, not int 에러 해결

반응형

 

 

언제부턴가 내가 만든 컴포넌트에서 아래와 같은 메시지를 간헐적으로 뱉기 시작했다.

 

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: replace() argument 2 must be str, not int

 

일단 에러메시지를 보면 원인을 명확히 알 수 있다. replace라는 함수 내부에 들어가는 2개의 인자는 무조건 str 형이어야 한다. 그런데 어떤 인자값 하나가 int 형으로 들어가서 생긴 문제이다. 

 

>>> str = "REP hi lim co"
>>>
>>> rep_str = 1
>>>
>>> str.replace("REP", rep_str)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: replace() argument 2 must be str, not int

 

대략 위와 같은 경우. 

코드를 다시 보니 정수형을 문자열로 변환하지 않은 부분이 보여서 변환해줬다.

 

>>> str = "REP hi lim co"
>>>
>>> rep_str = "1"
>>> str.replace("REP", rep_str)
'1 hi lim co'

>>> rep_str = 1
>>> str.replace("REP", str(rep_str))
'1 hi lim co'

 

위와 같이 정수형을 str 함수로 변환해주거나 아예 변수값 선언을 문자열로 해버리면 문제를 해결할 수 있다. 굉장히 사소하지만 자주나는 에러중 하나다.

반응형