boost-devs / peer-session

🚀 부스트캠프 AI Tech 1기 U-Stage 4조 피어 세션 자료/질문 모음 (archived)
8 stars 2 forks source link

[샐리] split() 함수의 default 인자 #14

Closed bsm8734 closed 3 years ago

bsm8734 commented 3 years ago

🙌 질문자


❓ 질문 내용

s = "Hello    World"
s.split()     # ['Hello', 'World']
s.split(' ')  # ['hello', '', '', '', 'World']

📄 참고 자료


CoodingPenguin commented 3 years ago

파이썬의 split에 관한 내용을 찾아보면, 다음과 같이 써져있습니다!

sep 이 지정되지 않거나 None 이면, 다른 분할 알고리즘이 적용됩니다: 연속된 공백 문자는 단일한 구분자로 간주하고, 문자열이 선행이나 후행 공백을 포함해도 결과는 시작과 끝에 빈 문자열을 포함하지 않습니다. 결과적으로, 빈 문자열이나 공백만으로 구성된 문자열을 None 구분자로 나누면 [] 를 돌려줍니다.

그래서 split()을 하면 연속된 공백 문자를 하나로 취급해서 ['Hello', 'World']로 분리합니다.

sep 이 주어지면, 연속된 구분자는 묶이지 않고 빈 문자열을 구분하는 것으로 간주합니다 (예를 들어, '1,,2'.split(',') 는 ['1', '', '2'] 를 돌려줍니다). sep 인자는 여러 문자로 구성될 수 있습니다 (예를 들어, '1<>2<>3'.split('<>') 는 ['1', '2', '3'] 를 돌려줍니다). 지정된 구분자로 빈 문자열을 나누면 [''] 를 돌려줍니다.

위에는 문서에 적혀있는 것인데 split(" ")는 공백 문자 하나를 구분자로 취급하고 연속된 구분자는 묶이지 않고 빈문자열을 구분하는 걸로 간주하므로 빈문자열이 포함되게 됩니다!

+) 참고로 이걸 알고 나서 모스부호 과제를 했는데 split(" ")이 되게 유용했습니다!

bsm8734 commented 3 years ago

파이썬 표준 라이브러리에 따르면, split 함수의 첫번째 파라미터 값(sep)에 따라 서로 다른 분할 알고리즘이 적용된다고 합니다.


string.split()

string.split(' ')


# 개인적인 생각이지만 아래와 같은 순서로 잘리지 않을까.. 추측해봅니다!
# 1 # "abc  def"
# 2 # "abc", "  def"
# 3 # "abc", "", "def"

코멘트 달린지 모르고 중복된 내용을 정리하고있었습니다!....

Heeseok-Jeong commented 3 years ago

유익합니다!