처음 발생시 분할


309

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

예를 들면 다음과 같습니다.

"123mango abcd mango kiwi peach"

처음 mango으로 나누기 :

"abcd mango kiwi peach"

답변:


522

에서 워드 프로세서 :

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

sep 를 구분 기호 문자열로 사용하여 문자열의 단어 목록을 반환 합니다. maxsplit 이 제공 되면 최대 maxsplit 분할이 수행됩니다 (따라서 목록에 최대 maxsplit+1요소가 있음).

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

참고 : maxsplit카운트 에 도달 한 후 더 많은 분할을 수행 할 수 있는 경우 목록의 마지막 요소에는 나머지 문자열 ( sep문자 / 문자열 포함)이 포함됩니다.
BuvinJ

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

8
@ 스위스 : 그래서 무엇. 기술은 여전히 ​​동일합니다.
Ignacio Vazquez-Abrams

6
@Ignacio : 난 그냥 지적하고 있습니다. 완전히 정답 대신 부분적으로 정답을 가질 이유가 없습니다.
Swiss

기술적으로 올바른 구분 기호를 가정합니다. 'first'는 [1] 인덱스입니다. 우리 모두가 참조하는 것은 물론 제로-인트 인덱스입니다. : D 의미론.
Izaac Corbett

27

나를 위해 더 나은 접근 방식은 다음과 같습니다.

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

... 문자열에 해당 항목이 없으면 "이 표시 IndexError: list index out of range"됩니다.

따라서 -1발생 횟수가 이미 1로 설정되어 있어도 피해를 입지 않습니다.


1
전에 작성된 것처럼 split () 메소드가 적용되는 횟수입니다. 메소드는 첫 번째 '망고'문자열 만 찾아 적용합니다.
Alex

2

당신은 또한 사용할 수 있습니다 str.partition:

>>> text = "123mango abcd mango kiwi peach"

>>> text.partition("mango")
('123', 'mango', ' abcd mango kiwi peach')

>>> text.partition("mango")[-1]
' abcd mango kiwi peach'

>>> text.partition("mango")[-1].lstrip()  # if whitespace strip-ing is needed
'abcd mango kiwi peach'

사용의 장점은 str.partition항상 다음 형식으로 튜플을 반환한다는 것입니다.

(<pre>, <separator>, <post>)

따라서 결과 튜플에 항상 3 개의 요소 가 있기 때문에 출력 풀기를 실제로 유연하게 만듭니다 .


-2
df.columnname[1].split('.', 1)

이렇게하면 데이터가 처음으로 '.'으로 분할됩니다. 문자열 또는 데이터 프레임 열 값에서

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.