[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_')
위와 같이 수정하면 코드가 문제 없이 잘 돌아간다.