인프런 커뮤니티 질문&답변

조민석님의 프로필 이미지
조민석

작성한 질문수

파이썬(Python) 기초부터 실무까지 part.1

반복문(실습-11)

질문 드립니다

작성

·

222

0

# 문자열 나누기
statements = "나는 열심히 파이썬 공부를 합니다."
result = ""
print(statements.split())
for a in statements:
result += a.strip()
print(result)

이렇게 했을 때는 여백없이 result 값이 나옵니다.
# 문자열 나누기
statements = "나는 열심히 파이썬 공부를 합니다."
result = ""
print(statements.split())
for a in statements:
result += a
print(result)

이렇게 했을 때는 statements와 동일한 값이 나와서

 

print('나는'+'열심히')를 실행해보았는데 나는열심히 라고 여백이 없이 나옵니다

2번째의 경우는 print('나는'+'열심히') 와 동일해서 여백이 없이 나와야 하는거 아닌가요?

답변 5

1

전자의 경우

result += a.strip()

에서 .strip() 함수를 통하여 여백을 감하며 더했기에 result가 statements에서 여백을 뺀 문자열이 되는 것이고

후자의 경우

result += a

이므로 여백이 있든 없든  문자를 모두 더하기에 result = statements가 되는 것 같습니다.

 

'나는'+'열심히'와는 다른 것이, statements는 어떻게 보면 '나는' + ' '(여백) + '열심히'이기에

후자의 경우 여백이 있이 나오는 것 같습니다.

0

for문 돌아갈 때 statements의 공백도 a에 들어가서 result에 더해져서 그런거같아요. 

0

[문자열.split()]은 원래 문자열의 양끝부터 ()내부의 문자가 연속으로 있는 곳까지 삭제한 문자열을 반환하는 함수에요. 즉 문자열 중간에 있는 값은 제거하지 않아요.

()내부에 아무것도 입력하지 않으면 양 끝 부터 공백(띄어쓰기, 줄바꿈, 탭)을 제거하는게 default구요.

따라서 문자열을 문자로 나눠서 해당문자가 공백이면 삭제하고 다시 문자열로 합치는 방식으로 공백을 제거할 수도 있지만,

차라리 [문자열.replace()]를 사용하시면 편해요.이 함수는 문자열에서 ()내부의 내용과 같은 문자(열)을 교체하는 함수로,

[문자열.replace(a,b)]로 쓰시면, 문자열에서 a를 찾아서 b로 교체합니다.

a에 ' ', b에 ''를 입력하시면 공백들을 삭제해줍니다.

0

print(statements.split())
for a in statements:
result += a
print(result)

에서 문자를 하나씩 더하는 코드는

for a in statements:
result += a

이건데, 여기에서는 여백을 없애는 코드가 없어요!

 

.split() 함수가 여백 없이 리스트에 저장을 하지만 문자열 만드는 데에는 사용되지 않았습니다

0

조민석님의 프로필 이미지
조민석
질문자

split() 을 사용했을 때 리스트 형식으로 리턴된 값을 보면 여백이 존재하지않는 것처럼 보이는데 제가 잘못 알고있는걸까요ㅠㅠ

조민석님의 프로필 이미지
조민석

작성한 질문수

질문하기