armsflex95   3년 전

아래 두 코드에서 차이점은 일단 문장을 받아서 단어 분류시킬때 split() 에 차이를 두었는데,

1. split(' ')  : 공백을 지정하여 단어 분류하느냐  -> \n 개행 발생  -> 개행 제거

 

2. split()  : 자동으로 공백 기준으로 단어 분류


해서 결과값은 같게 나오는거 같은데 1번은 틀리고 2번은 맞다고 합니다.

1번의 반례가 궁금합니다.

dldyddlwl   3년 전

반례는 "ab ",   단어 뒤에 공백이 오는 것입니다. 

답 : 1

글쓴이님의 코드 : 2 


 그 이유는,  '  '(공백)을 기준으로 나눌 때,   ab와 빈 문자열이 생성되어서 ['ab' ,  ''] , 길이가 2라는 결과가 나오게 됩니다.    

파이썬 공식문서에 의하면, sep 이 주어지면, 연속된 구분자는 묶이지 않고 빈 문자열을 구분하는 것으로 간주합니다. 이 말은, 구분자(sep)가 단어 사이에 끼이는 경우,

"ab cd" 같은 경우는 ab와 cd를 정상적으로 리턴하지만,  그렇지 않은 경우, "ab ", " ab" 처럼 또는 "ab     cd" 같은 경우, 빈 문자열을 포함해서 리턴하게 되는 것입니다.  


그러나, split()의 경우,파이썬 공식문서에 의하면,

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

따라서 위와 같이 빈 문자열이 생기는 경우가 없어집니다.

armsflex95   3년 전

친절한 답변 너무나 감사합니다!! 다시 정리해보도록 하겠습니다!!

아, 그리고 위와 같은 정보들을 얻으려면 파이썬 공식문서를 참조해야 하는건가요? 

혹은 다른 추천하시는 사이트가 있을까요?

 

dldyddlwl   3년 전

자주 쓰는 함수 같은 것들은 구글링 하면 여러 블로그 같은 곳에 잘 설명되어있습니다. 그래도, 파이썬 공식문서가 다행히 한글로도 되어있으니 둘 다 참고하는 게 좋을 것 같습니다!

댓글을 작성하려면 로그인해야 합니다.