2011-08-01 7 views
183

구분 기호가 처음 나타날 때 문자열을 분할하는 가장 좋은 방법은 무엇입니까?첫 번째 발생시 분할

예를 들어 : 첫 번째 mango

"123mango abcd mango kiwi peach" 

분할은 얻을 : the docs에서

"abcd mango kiwi peach" 
+0

구분 기호 란 무엇입니까? 너는 쪼개지고있다.하지만 첫 번째 부분은 어디에 있는가? 당신의 예는 전혀 분명하지 않습니다! – GaretJax

+1

죄송합니다. 단락 기호를 잊어 버리 셨습니다! – Acorn

답변

287

:

str.split([sep[, maxsplit]])

sep을 구분 기호 문자열로 사용하여 문자열의 단어 목록을 반환하십시오. maxsplit이 주어지면 최대 값 maxsplit 개가 완료됩니다 (따라서 목록의 최대 값은 maxsplit+1 개입니다). . 그 발생을 발생하는 경우 때문에 당신은 "얻을 것이다 IndexError: list index out of range"

을 따라서 -1을 문자열에없는 ...

s.split('mango', 1)[-1] 

:

s.split('mango', 1)[1] 
44
>>> s = "123mango abcd mango kiwi peach" 
>>> s.split("mango", 1) 
['123', ' abcd mango kiwi peach'] 
>>> s.split("mango", 1)[1] 
' abcd mango kiwi peach' 
+0

잘못된 구분 기호로 가정합니다. – Swiss

+4

@Swiss : 그래서. 이 기법은 여전히 ​​동일합니다. –

+4

@ 이그나시오 : 나는 그것을 지적하고 있습니다. 완전히 정확한 대신 부분적으로 정답을 가질 이유가 없습니다. – Swiss

17

나를 위해 더 나은 방법이있다 아무런 피해도 없으므로 발생 횟수가 이미 1로 설정되어 있습니다.

+0

'망고'이후 '1'의 의미는 무엇입니까? – FaCoffee

+0

split() 메서드를 적용 할 때까지 발생 횟수입니다. 메서드는 첫 번째 'mango'문자열 만 찾아서 적용합니다. – Alex

0

여기에 itertools 접근 방식 :

s = "123mango abcd mango kiwi peach" 
"".join(it.islice(it.dropwhile(lambda x: x != " ", s), 1, None)) 
#'abcd mango kiwi peach'