Python 문자열 다루기

ROK·2022년 1월 4일
0

파이썬 문자열 다루기

이스케이프 문자

\' : 홀따옴표 '
\" : 겹따옴표 "
\t : 탭 tab
\n : 줄바꿈 enter
\\ : 백슬래시 \

원시 문자열

이스케이프 문자를 무시하고 싶을 때 사용
문자열 시작 따옴표 앞에 r을 붙이면 이스케이프 문자가 적용되지 않음

print('Don\'t touch me')
print(r'Don\t touch me')

출력
Don't touch me
Don\'t touch me

startswith, endswith

startswith

예시) 생산직은 OB 사무직은 OW로 시작하는 ID가 저장된 데이터베이스가 있다
생산직 직원들의 ID만 확인하고 싶을 때 startswith 사용

EmployeeID = ['OB94382', 'OW34723', 'OB32308', 'OB83461', 'OB74830', 'OW37402', 'OW11235', 'OB82345'] 
Production_Employee = [P for P in EmployeeID if P.startswith('OB')]  # 'OB'로 시작하는 직원 ID를 다 찾아봅니다
print(Production_Employee)

출력
['OB94382', 'OB32308', 'OB83461', 'OB74830', 'OB82345']

endswith

사진 폴더 예시
위와 같은 사진 파일들이 저장되어 있을 때 .png 파일만 얻고 싶다면, endswit를 사용해 해당 파일을 찾을 수 있다

import os
photo = os.listdir('/User/Username/Documents/photo')
png = [png for png in photo if png.endswith('.png')]
print(png)

출력
metaflow.png
Pytorch.png
smartphone.png
TDG.png

공백 문자 처리

공백문자는 스페이스바와 같이 띄어쓰기로 표기되는 항목, trimming이라고 한다

여러 가지 공백 문자

  • 스페이스(space) : 한 칸 띄어쓰기
  • 탭(tab) : \t 네 칸 띄어쓰기, 때에 따라 두 칸 띄어쓰기로 표기됨
  • 줄 바꿈(new line) : 줄 바꿈
  • 라인 피드(line feed, 개행) : \n 줄 바꿈을 라인피드라고 한다
  • 캐리지 리턴(carriage return, 복귀) : \r 커서를 맨 앞으로 이동, 커서를 원위치로 복귀시킨다는 뜻, 커서를 맨 앞으로 보내고 \r 뒤에 문자가 있으면 그 문자를 출력
print("사회적 거리두기")
print('--------------------------')
print("사회적\t거리두기")
print('--------------------------')
print("사회적\n거리두기")
print('--------------------------')
print("사회적\r거리두기")

출력
사회적 거리두기
--------------------------
사회적	거리두기
--------------------------
사회적
거리두기
--------------------------
거리두기

공백 문자 제거

파이썬에서 strip() 메서드를 사용해 공백 문자를 처리

txt = "      Strip white spaces.      "
print('[{}]'.format(txt))
print('--------------------------')

#- 양쪽 공백 제거 : strip()
print('[{}]'.format(txt.strip()))
print('--------------------------')

#- 왼쪽 공백 제거 : lstrip()
print('[{}]'.format(txt.lstrip()))
print('--------------------------')

#- 오른쪽 공백 제거 : rstrip()
print('[{}]'.format(txt.rstrip()))

출력
[      Strip white spaces.      ]
--------------------------
[Strip white spaces.]
--------------------------
[Strip white spaces.      ]
--------------------------
[      Strip white spaces.]

대소문자

알파벳으로 구성된 문자열에서 대소문자를 간편하게 변경

  • upper() : 모든 문자를 대문자로 변환
  • lower() : 모든 문자를 소문자로 변환
  • capitalize() : 첫 글자만 대문자로 변환
str = "Life is what you make of it"
str.upper()
str.lower()
str.capitalize()

출력
LIFE IS WHAT YOU MAKE OF IT
life is what you make of it
Life is what you make of it

isx

isx 형태의 메서드 문자열의 구성에 따라 bool값을 반환

  • isupper() : 문자열이 모두 대문자면 True, 아니면 False
  • islower() : 문자열이 모두 소문자면 True, 아니면 False
  • istitle() : 문자열의 첫 글자만 대문자면 True, 아니면 False
  • isalpha() : 문자열이 모두 알파벳 문자면 True, 아니면 False
  • isalnum() : 문자열이 모두 알파벳 문자와 숫자면 True, 아니면 False
  • isdecimal() : 문자열이 모두 숫자면 True, 아니면 False

join()과 split()

join()은 인자로 tuple, list, string 등 반복 가능한 객체를 받는 메서드
각각의 원소를 모아 하나의 문자열로 합쳐준다

stages = ['alcohol', 'caffeine', 'nicotine']
",".join(stages)
"_".join(stages)

출력
'alcohol,caffeine,nicotine'
'alcohol_caffeine_nicotine'

split()은 반대로 하나의 문자열을 구분자의 기준으로 나누고 리스트로 반환
구분자를 지정하지 않으면 ,를 기준으로 나눠준다

'alcohol,caffeine,nicotine'.split(',')
'alcohol_caffeine_nicotine'.split('_')

 출력
 ['alcohol', 'caffeine', 'nicotine']

replace

replace()는 replace(a,b) 형태로 사용하며 문자열 안의 a를 b로 바꿔준다

str = "I can do it"
str.replace('I', 'You')

출력
You can do it

불변의 문자열

  • 가변 객체(mutable object)
    • 객체를 생성한 후 객체의 값을 수정할 수 있다
    • 변수는 값이 수정된 같은 객체를 가르킨다
    • list, set, dict
  • 불변 객체(immutable object)
    • 객체를 생성한 후 객체의 값을 수정할 수 없다
    • 변수는 해당 값을 가진 다른 객체를 가리킨다
    • int, float, complex, bool, string, tuple, frozen set

참고
Python 개념 정리 - 객체란
mutable과 immutable의 차이

profile
하루에 집중하자

0개의 댓글