2012-11-15 1 views
2

저는 IRC 봇을 쓰고 있고, 모든 스플릿을 사용하여 메시지를 파싱하고 있습니다. IRC를 '메시지'의 형식은 다음과 같습니다반복이있는 경우에도 문자 뒤의 모든 것을 가져옵니다. Python

message = data.split(':')[2] 

이 GET의 모든 후 마지막 ':' 그러나 특히

:[email protected]/web/freenode/ip.***.***.***.*** PRIVMSG #Channel :Message body 

메시지의 텍스트입니다 얻을 하나입니다 사용자가 IRC를 통해 링크를 전송, 다음 메시지는 다음과 같이 표시됩니다

:[email protected]/web/freenode/ip.***.***.***.*** PRIVMSG #Channel :http://web address.com/ 

나머지는 어떤을 그대로 만, 메시지의 'HTTP'섹션을 얻을 것입니다 코드 w 분할의 세 번째 섹션에서.

그래서 링크가 포함 된 메시지를 어떻게 파싱 할 수 있습니까?

한 가지 방법은 첫 번째 섹션의 아이폰에 얻을, 그것을 제거하는 것입니다 :

message = data[len(data.split(':')[1])+1:] 

을하지만 더 나은 방법이 있어야한다는 느낌을 도울 수 없어요. 하나 있습니까?

답변

1

세트 :의 양을 당신은 분할 할 :

data.split(':', 2) 

을 그리고 당신은해야합니다 :

['', 
'[email protected]/web/freenode/ip.***.***.***.*** PRIVMSG #Channel ', 
'http://web address.com/'] 
3

str.split()는 선택적 인수 maxsplit을 받아들입니다.

message = data.split(':', 2) 
+0

이 또한 .rsplit()가 있지만 오른쪽에서부터 나뉩니다. – monkut

+0

내가 찾고있는 것 – sdfgeoff