[Python] valueerror : too many values to unpack expected 2

2021. 6. 2. 13:17

 

000_face_001.BMP

001_face_001.BMP

002_face_001.BMP

003_face_001.BMP

 ...


 

위와 같은 이름들로 되어 있는 파일들을 분류하기 위해 split 을 사용했다. 

 

처음에는 '_' 단위로 분류하고 싶어서 아래와 같이 작성했더니 오류가 뜨는 것을 확인했다.

img_id, etc = filename.split('_')
label, _ = etc.split('_')

 

valueerror : too many values to unpack expected 2

 

이 오류 코드는 현재 2개의 값만 가능한데, 그 이상의 값을 갖고 있다는 것을 의미한다.

 

조금 더 찾아보니, split은 해당 단위를 기준으로 양 옆으로 쪼개는 것이라고 한다.

 

즉, 위의 코드에서는 '_'을 기준으로 양 옆으로 쪼개게 되는 것인데, 첫번째 구문에서 img_id와 etc로 쪼개기 위해 실행했을 때 '_'가 두번 나오게 되니 총 3등분으로 나뉘게 되는 것을 의미한다. 하지만 img_id와 etc 이렇게 2개의 값만 받을 수 있도록 하니 오류가 난 것이다.

 

split를 썼을 때 앞에서부터 차례로 '_'를 인식해서 000와 face_001을 쪼개고, 그 이후의 '_'를 다시 인식해서 face와 001을 쪼개는 줄 알았는데 아니었다.

 

이를 해결하기 위해 아래와 같이 구문을 수정했다.

  img_id, etc = filename.split('_f')
  _, label = etc.split('e_')

 

위와 같이 수정하면 코드가 문제 없이 잘 돌아간다.