2016-08-14 3 views
1

죄송합니다.이 질문이 벙어리지만 내 코드에는 몇 가지 문제가 있습니다.Python에서 이상한 오류가 발생했습니다 (IndexError)

나는 Reddit을 긁어 내고 상단 그림을 바탕 화면 배경으로 설정하는 Python 스크립트를 가지고 있습니다.

그림이 충분히 크면 다운로드 만하고 싶지만 이상한 오류가 나타납니다.

>>> m = '1080x608' 
>>> w = m.rsplit('x', 1)[0] 
>>> print(w) 
1080 
>>> h = m.rsplit('x', 1)[1] 
>>> print(h) 
608 

이 방법은 정상적으로 작동하지만 다음은 거의 같지 않습니다.

>>> m = '1280×721' 
>>> w = m.rsplit('x', 1)[0] 
>>> h = m.rsplit('x', 1)[1] 
Traceback (most recent call last): 
    File "<pyshell#35>", line 1, in <module> 
    h = m.rsplit('x', 1)[1] 
IndexError: list index out of range 
+0

'x'문자는 각 경우마다 다릅니다. 잘 봐봐! – Selcuk

+0

아 남자! 나는 그것을 볼 수 없다! 나는 계속 보게 될거야 –

+0

오, 알았어! 고마워요! –

답변

0

×! = x. Split은 한 요소 목록을 반환하며 두 요소를 가져 오려고합니다. 두 번째 경우

'1080x608'.rsplit('x', 1) # ['1080', '608'] 
'1280×721'.rsplit('x', 1) # ['1280\xc3\x97721'] 

는 목록에초 소자 없다 - 단지 하나의 요소를 포함한다.

MCVE은 다음과 같습니다 제외

l = ['something'] 
l[1] 

:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: list index out of range 

는 당신이 partition를 사용할 수있는 두 부분으로 문자열을 분할하도록하려면.

분할은 9월의 최초 발생시 캐릭터 및 세퍼레이터 후 부를 세퍼레이터 자체 분리되기 전에 부품을 포함하는 3- 튜플을 돌아가 . 구분 기호를 찾을 수없는 경우 3 개의 문자열을 포함하는 문자열을 반환하고 두 개의 빈 문자열을 반환합니다. 두 번째 예 ×에서

w, sep, h = m.partition('x') 
# h and sep will be empty if there is no separator in m 
+0

하지만 첫 번째 예제에서는 작동하지만 두 번째 예제에서는 작동하지 않는 이유는 무엇입니까? 벙어리 질문에 대한 미안합니다 –

0

는 대신 곱셈 기호입니다 x와 동일하지 않습니다. 이 훔침을 어딘가에서 가져 와서 파싱하는 경우 먼저해야합니다.

m = m.replace('×', 'x') 
+0

예, 당신이 코멘트를하기 직전에 그 라인을 추가했습니다, 어쨌든 고맙습니다. –

관련 문제