[Python]문자, 숫자 사이 공백 제거(strip(), lstrip(), rstrip())

이유진·2022년 2월 2일
0

Python

목록 보기
1/9

python 기초 공부를 다시 시작하면서,
혼.공.파에 있는 마무리 문제를 풀면서 개념 정리 겸, 문제 풀이를 적어보려고 한다.

<문제👇>

: 반복문과 print() 함수를 조합하여, 아래와 같은 실행결과를 출력하기(단, 숫자와 문자사이에 빈칸이 없어야 한다.)

# 딕셔너리의 리스트를 선언합니다.

pet = [
    {"name" : "구름", "age" : 5},
    {"name" : "초코", "age" : 3},
    {"name" : "아지", "age" : 2},
    {"name" : "호랑이", "age" : 7},
]

# 실행결과 
# 구름 5살
# 초코 3살
# 아지 2살
# 호랑이 7살

아주 간단한 문제라고 생각했다.
단순하게 반복문(for())와 print()만 사용하면 되기 때문이다.

근데, 문제는 '숫자와 문자 사이에 빈칸이 없어야 한다!'
라는 조건이였다.

우선은
for()와 print()를 사용하여 출력해보기로 했다.

과정1)

for i in pet:
    print(i["name"], i["age"], "살".lstrip())

<실행결과>
구름 5 살
초코 3 살
아지 2 살
호랑이 7 살

strip() 함수를 사용해도, 숫자와 문자 사이의 공백이 사라지지 않는다.
이번에는

과정2)

for i in pet:
    print(i["name"], i["age"]+"살".lstrip())

<실행결과>
print(i["name"], i["age"]+"살".lstrip()) TypeError: unsupported operand type(s) for +: 'int' and 'str'
숫자와 문자는 type 유형이 서로 다르기 때문에 연산을 할 수 없다.

과정3)

그럼,
i["age"]를 string으로 type을 바꾸면, 문자열과 문자열 사이의 공백이 사라지지 않을까..?
라는 생각으로 접근해보았다.

for i in pet:
    print(i["name"], str(i["age"])+"살".lstrip())

<실행결과>
구름 5살
초코 3살
아지 2살
호랑이 7살

원하던 결과대로, 숫자와 문자 사이의 공백없이 결과물을 출력하였다.

그럼,

과정1)에서처럼, 공백을 제거하는 strip() 함수를 사용했는데도 원하는 공백이 사라지지 않았나이다.
이유는 좀 더 찾아보는 걸로..


공백 제거 함수 이론

문자열 공백(ex. 스페이스, 탭 문자, 줄 바꿈(\r 또는 \n))을 제거하는 함수 2가지
strip()replace()

  • strip() : 문자열 양쪽 공백 제거

  • lstrip() : 문자열 왼쪽 공백 제거

  • rstrip() : 문자열 오른쪽 공백 제거

  • replace(old, new) : 첫번재 인자 old (없앨 문자), 두번째 인자 new (바꿀 인자) 통해 새로운 문자열 반환함.
    ex) 문자열.replace(" ", "") --> 공백있는 문자열을 공백없는 문자열로 바꿈

    str = "I like seventeen        "
    result_str = str.replace(" ", "")

print("str:", str) # str: I like seventeen
print("result_str:", result_str) # result_str: Ilikeseventeen


<실행결과>
  
result_str Ilikeseventeen
profile
차근차근 배워나가는 주니어 개발자

0개의 댓글