2011-02-17 5 views
1

나는 소켓에서받은 데이터를 분할하는 방법을 알아 내려고하고있다. 소켓이 작동하고 데이터를 올바르게 가져올 수 있지만 이제는 검색된 데이터를 분할하여 마지막 문자열을 가져 오려고합니다. 여기에파이썬 소켓에서 데이터를 분할

split = data.split(' ') 
print split 
print split[-1] 

(데이터가 소켓에서 수신 된 데이터입니다)하지만 난 그것을 시도 할 때 늘 어떤 이유로 작동 내가 무엇을 시도하고있다. 마찬가지로 내가 "test1 test1"로받은 문자열을 가지고 말할 수 나는 test1 싶어. 나를 위해

+0

분할에 아무 것도 포함되어 있지 않습니까? 'data'에 바이너리 데이터가 있습니까? 당신의 예제는 정확하게 나눌 수있는 한 작동해야합니다. (문자열이 0이 아닌 것으로 가정합니다.) – Skurmedel

+0

"test test1"문자열을 보냅니다. 바이너리 또는 그 문자열 만 있으면 안됩니다. – AustinM

+0

"작동하지 않을 것"이라고 말하면 어떻게됩니까? 오류가 있습니까? 화면에는 무엇이 나타 납니까? –

답변

1

다음 작품 :

>>> data = "chdir /" 
>>> a = data.split(" ") 
>>> a 
['chdir', '/'] 
>>> a[-1] 
'/' 

이 나타납니다 당신을 위해 무엇을 찾고있는 사람이 될 수 있습니다. 코드가 작동하지 않는 이유는 정확한 내용이 data 인 것입니다.

원래 문자열에 공백이 여러 개있는 경우 .split(" ")을 사용하면 .split()과 약간 다릅니다. 예를 들어, 참조 : 그것은 자신의 코드에서 개체 이름을 공통 라이브러리 함수의 이름을 사용하는 나쁜 관행이

>>> "chdir /".split(" ") 
['chdir', '/'] 
>>> "chdir /".split(" ") 
['chdir', '', '/'] 
>>> "chdir /".split() 
['chdir', '/'] 
0

그냥 참고.

간혹 오류가 발생하지만 항상 혼란을 야기합니다.

+0

'변수'라는 단어는 파이썬에서 모호합니다. 귀하의 문장에서 그것은 "이름이 묶여 있고 그 대상의 주소가 들어있는 참조"를 의미합니다. 하지만 그건 문제가 아닙니다. BTW, 'reference'라는 단어조차도 C++과 같지 않기 때문에별로 좋지 않습니다. – eyquem

+0

이 동의했습니다. 나는 그 말씨를 조금 편집했다. –

관련 문제