2013-06-06 3 views
0

저는 Split을 사용하여 분할하는 Python 문자열이 있습니다. 그런 다음 길이에 액세스하고 세 번째 값을 가져 오려고합니다.문자열 분할 및 값 선택

Q = S.split('/') 
E = = len(Q) 
R = Q[E[2]] // ERROR 

내가 분할 사용 후 3 값에 액세스 할 수있는 방법을 어떤 생각?

+1

'E'가 필요 없습니다 ... 그냥'R = Q [2] ' – Jared

+0

정수를 색인 할 수 없습니다. – squiguy

+0

나는 당신의 방법 @ Jared를 시도했다. 그러나 그것은 나에게 오류를 준다 : IndexError :리스트 인덱스가 범위를 벗어났다. – Nick

답변

2

이 답변은 모두 정확, 난 그냥 조금 추가하고 싶었 당신은 몇 가지 방법

Q = S.split('/') 
R = Q[2] 

또 다른 옵션은이를 할 수 원래의 질문에 무엇이 잘못되었는지 세분화합니다. 다음 할당을 만들 때 :

E = len(Q) 

E는 정수로 설정되고있다. 때 당신이 이것을 실행하려고 :

R = Q[E[2]] 

당신이 실제로 일을하려고하는 integerE의 두 번째 요소를 가지고있다. E은 배열이 아니기 때문에 (기술적 인 오류는 TypeError: 'int' object is not subscriptable입니다.) 이것은 프로그램이 깨지는 곳입니다 (실제로는 E = = len(Q)에서 깨질 것입니다.하지만이 줄 뒤에 오류가 발생했기 때문에 질문에 오타가 있다고 가정합니다) .

1

그냥 수행

R = S.split('/')[2] 

세 번째 값을 선택할 수 있습니다. 일반적으로 /을 사용하여 분할하면 파일 경로와 관련이 있습니다. 이 다음 바로 가기를 가지고있는 경우라면 :

import os 
R = os.path.split(path) 
+0

'/'문자로 나눌 때 세 번째 요소가 아니라 세 번째 요소를 제공합니다. –

+0

하지만 그게 정확히 그가 원했던 것입니다. 문자열의 세 번째 값 –

+0

원래의 대답은 문자열을 반복하는 것을 보여주었습니다. 유용하지만 어떤 질문을 수행하려고했는지는 관련이 없습니다. –

1

당신이해야하는 것은 잘못된 구문이있다 (E == len(Q))

세 번째 값에 액세스하려면 : 이제

Q = S.split('/') 
R = Q[2] 

당신이 할 수 있습니다를 len()을 사용하여 목록에 적절한 수의 요소가 있는지 확인하고 len()은 길이 인 정수를 반환합니다. 예 :

Q = S.split('/') 
if len(Q) >= 3: 
    R = Q[2] 
else: 
    # handle a situation where there aren't enough elements 
+0

나는 그것을 시도 할 것입니다! 덕분에 @ 가빈 – Nick

+2

길이를 확인하는 대신'try' /'except IndexError'를 사용합니다. –

+0

@JonClements 좋은 지적입니다. 그가 적어도 세 가지 요소가 있어야한다는 가정을하고 있다면 더 합리적인 말이 될 것입니다. 나는 질문 자체에 기초하여 len()이 어떻게 사용될 수 있는지 보여주기위한 잘못된 시도를 던진 것만 같아 보입니다. –

2

두 번째 줄은 전혀 필요하지 않습니다.

R = S.split('/')[2] 

예 출력 :

>>> S = "Hey/there/you/are" 
>>> Q = S.split('/') 
>>> R = Q[2] 
>>> R 
'you' 
>>> R = S.split('/')[2] 
>>> R 
'you'