본문 바로가기
Python/Data Structure

[Python]리스트 내 문자열 공백 없애기

by 전봇대파괴자 2021. 2. 6.

문자열을 다룰 때 가끔씩 필요없는 공백이 들어간 것들을 볼 수 있습니다. 

 

'   Apple'

'  A pp l e  '

'Apple    ' 

 

뭐 대체로 이런 것들이죠.

이런 문자열이 하나라면 금방 처리할 텐데, 리스트 안에 들어가 있을 때가 있습니다. 그럴 때 사용하는 방법입니다.

우선은 공백이 포함된 문자열 하나에서 공백을 없애는 방법을 알아보겠습니다. 

 

1. strip()

sample_str = '  Apple '
sample_str = sample_str.strip()
print(sample_str)

>> 'Apple'

 

2. replace()

sample_str = '  Apple '
sample_str = sample_str.replace(' ', '')
print(sample_str)

>> 'Apple'

 

보다시피 문자열의 공백을 없애는 방법은 strip과 replace 두 가지입니다. 이 두 방법은 문자열의 필요없는 공백을 없애준다는 점은 같지만, 결정적인 차이점이 있습니다. 

 

# strip과 replace의 차이
sample_str = '     A    p pl    e     '

# strip
print(sample_str.strip())
>> 'A    p pl    e' # 좌우 공백만 제거

# replace
print(sample_str.replace(' ', '')
>> 'Apple' # 모든 공백 제거

strip은 문자열의 첫 글자의 왼쪽과 끝 글자의 오른쪽에 있는 공백(문자열을 기준으로 좌우 공백)만을 없애주지만, replace의 경우 문자열 내의 모든 공백을 없앨 수 있습니다. 그 이름답게(replace, 대체하다) 모든 필요없는 공백(' ')을 공백 없음('')으로 대체하는 것이기 때문에 가능한 것이죠. 

 

이를 응용하면 리스트 내의 문자열에 있는 필요없는 공백도 문제없이 제거할 수 있습니다. 

 

sample_li = ['    fly ', '   to    ', 'the     ', '      sky']

# list item별 공백 없애기
strip_li = []
for i in sample_li:
    i = i.strip() # i.replace(' ', '')
    strip_li.append(i)
print(strip_li)

>> ['fly', 'to', 'the', 'sky']

 

더 깔끔하게 만든 코드는 다음과 같습니다. 

 

# strip
sample_li = ['    fly ', '   to    ', 'the     ', '      sky']
new_li = [i.strip() for i in sample_li]
print(new_li)

>> ['fly', 'to', 'the', 'sky']

# replace
sample_li = ['    fly ', '   to    ', 'the     ', '      sky']
new_li = [i.replace(' ', '') for i in sample_li]
print(new_li)

>> ['fly', 'to', 'the', 'sky']

 

도움이 되었기를 바랍니다.