[python] 문자열 처리하기

[python] 문자열 처리하기 updated_at: 2024-01-15 11:36

문자열 처리하기

문자열 합치기

+

문자열 합치기

s1 = 'onstory.fun'
s2 = ' is '
s3 = 'funny'
str1 + str2 + str3 # <result>  onstory.fun is funny

*

문자열 반복

s = 'go '
s * 3 # go go go

join

여러개의 문자열을 구분자와 함께 합쳐서 하나의 문자열로 변환

s1 = ["this", "is", "python", "string"]
s2 = "_".join(s1)   # "구분자".join(여러개의 문자열)
 # <result> this_is_python_string

문자열 슬라이싱

  • [:] : 처음부터 끝까지
  • [start:] : start부터 끝까지
  • [:end] : 처음부터 end-1까지
  • [start:end] : start부터 end-1까지
  • [start:end:step] : start부터 end-1까지 step만큼 문자를 건너뛰면서
s1 = "this is python string"

s1[:] # 처음부터 끝까지
> result:  "this is python string"

s1[8:] # 8번째 문자부터 끝까지
> result: "python string"

s1[:7] # 처음부터 6번째 문자까지
> result: "this is"

s1[8:14] # 8번째 문자부터 13번째 문자까지
> result: "python"

s1[-6:] # 뒤에서 6번째 문자부터 끝까지
> result: "string"

s1[:-7] # 처음부터 뒤에서 8번째 문자까지
> result: "this is python"

s1[0:len(s1):2] # 처음부터 끝까지 2개씩 건너뛰기
> result:  "ti spto tig"

문자열 계산하기

len

문자열 길이 구하기

s1 = "this is python string"
len(s1) # <result> 21

min

문자열 내 문자의 최소값 반환

s1 = "abcde"
s2 = "12345"
min(s1) # <result> "a"
min(s2) # <result> "1"

max

문자열 내 문자의 최대값 반환

max(s1) # <result> "e"
max(s2) # <result> "5"

count

문자열이 나온 횟수 (시작지점과 끝지점 지정 가능)

s1 = "this is python string"
s1.count("i") # <result> 3
s1.count("a") # <result> 0
s1.count("i", 8, len(s1))   # 8번째 문자부터 끝까지 "i"가 나온 횟수
# <result> 1

문자열 찾기

index

찾으려는 문자열의 시작 인덱스 (앞에서부터 탐색)

s1 = "this is python string"
s1.index("i") # <result> 2
s1.index("a")   # 없으면 에러  ValueError: substring not found

rindex

찾으려는 문자열의 시작 인덱스 (뒤에서부터 탐색)

s1 = "this is python string"
s1.rindex("i") # <result> 18
s1.rindex("a")   # 없으면 에러 ValueError: substring not found

find

찾으려는 문자열의 시작 인덱스 (앞에서부터 탐색)

s1 = "this is python string"
s1.find("n") # <result> 13
s1.find("k")   # 없으면 -1 

rfind

찾으려는 문자열의 시작 인덱스 (뒤에서부터 탐색)

s1 = "this is python string"
s1.find("n") # <result> 19
s1.rfind("k")   # 없으면 -1

startswith

특정 문자열로 시작하면 True, 아니면 False

s1 = "this is python string"
s1.startswith("this") # <result> True
s1.startswith("string") # <result> False

endswith

특정 문자열로 끝나면 True, 아니면 False

s1 = "this is python string"
s1.endswith("this") # <result> False
s1.endswith("string") # <result> True

문자열 공백 처리하기

strip

공백 지우기

s1 = "             this is python string            "
s1.strip() # <result> "this is python string"

lstrip

문자열의 왼쪽에 있는 공백 제거

s1 = "             this is python string"
s1.lstrip() # <result> "this is python string"

rstrip

문자열의 오른쪽에 있는 공백 제거

s1 = "this is python string            "
s1.rstrip() # <result> "this is python string"

isspace

문자열이 모두 공백이면 True, 아니면 False

s1 = "this is python string      "
s2 = "             "
s1.isspace() # <result> False
s2.isspace() # <result> True

center

지정한 총 길이가 되도록 양쪽에 공백을 추가하여 중앙정렬

s1 = "this is python string"
s1.center(30)   # center(문자열의 폭) # <result> "    this is python string     "

대소문자

lower

문자열 안의 모든 대문자를 소문자로 변환

s1 = "This Is Python String"
s1.strip() # <result> "this is python string"

upper

문자열 안의 모든 소문자를 대문자로 변환

s1 = "This Is Python String"
s1.strip() # <result> "THIS IS PYTHON STRING"

islower

문자열이 모두 소문자면 True, 아니면 False

s1 = "This Is Python String"
s2 = "this is python string"
s1.islower() # <result> False
s2.islower() # <result> True

isupper

문자열이 모두 대문자면 True, 아니면 False

s1 = "This Is Python String"
s2 = "THIS IS PYTHON STRING"
s1.islower() # <result> False
s2.islower() # <result> True

swapcase

소문자와 대문자를 바꾼 문자열 반환

s1 = "This Is Python String"
s1.swapcase() # <result> "tHIS iS pYTHON sTRING"

title

단어의 맨 앞 글자만 대문자로 변환한 문자열 반환

s1 = "this is python string"
s2 = "THIS IS PYTHON STRING"
s1.title() # <result> "This Is Python String"
s2.title() # <result> "This Is Python String"

istitle

단어의 맨 앞 글자만 대문자면 True, 아니면 False

s1 = "This Is Python String"
s2 = "This is python string"
s1.istitle() # <result> True
s2.istitle() # <result> False

capitalize

문자열의 맨 앞 글자만 대문자로 변환한 문자열 반환

s1 = "this is python string"
s2 = "THIS IS PYTHON STRING"
s1.capitalize() # <result> "This is python string"
s2.capitalize() # <result> "This is python string"

문자열 수정하기

split

구분자를 기준으로 문자열 나누기

  • 문자열.split(sep='구분자', maxsplit=분할횟수)
  • 문자열.split() : default 값은 공백(" ")
  • 문자열.split('구분자')
  • 문자열.split('구분자', 분할횟수) : 분할횟수가 주어지면 분할횟수 까지만 나누고 이후에 구분자가 나오더라도 더이상 처리 하지 않는다.
s1 = "this, is, python, string"
s2 = "this is python string"
s1.split(",")   # split("구분자") # <result> ["this", " is", " python", " string"]
s2.split()      # default 값은 공백(" ") # <result> ["this", "is", "python", "string"]

splitlines

여러줄의 문자열을 줄바꿈("\n") 기준으로 나눔

s1 = "this\n is\n python\n string"
s1.splitlines() # <result> ["this", " is", " python", " string"]

replace

문자열 바꾸기

s1 = "this is python string"
s2 = "this is python string string string string"
s1.replace("python", "my")    # replace("기존 문자열", "새 문자열")
 # <result> "this is my string"
s2.replace("string", "S", 3)    # replace("기존 문자열", "새 문자열", "개수")
 # <result> "this is python S S S string" # 4번째 "string"은 교체하지 않음

zfill

지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채움

s1 = "python"
s1.zfill(10)   # zfill(문자열의 길이)
 # <result> "0000python"

ljust

문자열을 지정된 길이로 만든 뒤 왼쪽으로 정렬하며 남는 공간을 지정된 문자로 채움

s1 = "python"
s1.ljust(10, "*")   # ljust(문자열의 길이, 채울 문자)
 # <result> "python****"

rjust

문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하며 남는 공간을 지정된 문자로 채움

s1 = "python"
s1.rjust(10, "*")    # rjust(문자열의 길이, 채울 문자)
 # <result> "****python"

maketrans / translate

문자를 다른 문자로 바꾸는 테이블 생성 / 문자열 안의 문자를 다른 문자로 바꿈

s1 = "this is python string"
table = str.maketrans("tps", "123")   # t->1, p->2, s->3으로 변환
s1.translate(table)
 # <result> "1hi3 i3 2y1hon 31ring"

문자열 연산자

+

여러개의 문자열을 더해서 연결하기

s1 = "this is"
s2 = " python string"
s1 + s2
 # <result> "this is python string"

*

같은 문자열을 여러번 반복하기

s1 = "python"
s1 * 3   # 3번 반복
 # <result> "pythonpythonpython"

숫자와 문자

isalnum

문자열이 알파벳과 숫자로만 이루어져 있으면 True, 아니면 False

s1 = "this is python string"
s2 = "python"
s3 = "123"
s4 = "python123"
s1.isalnum()   # 공백이 있어서 False
s2.isalnum() # <result> True
s3.isalnum() # <result> True
s4.isalnum() # <result> True

isalpha

문자열이 알파벳으로만 이루어져 있으면 True, 아니면 False

s1 = "this is python string"
s2 = "python"
s3 = "123"
s4 = "python123"
s1.isalpha()   # 공백이 있어서 False
s2.isalpha() # <result> True
s3.isalpha() # <result> False
s4.isalpha() # <result> False

isdigit, isnumeric

문자열이 숫자로만 이루어져 있으면 True, 아니면 False

s1 = "this is python string"
s2 = "python"
s3 = "123"
s4 = "python123"
s1.isdigit()   # 또는 s1.isnumeric()
 # <result> False
s2.isdigit()   # 또는 s2.isnumeric()
 # <result> False
s3.isdigit()   # 또는 s3.isnumeric()
 # <result> True
s4.isdigit()   # 또는 s4.isnumeric()
 # <result> False

isdecimal

문자열이 10진수 문자열이면 True, 아니면 False

s1 = "this is python string"
s2 = "python"
s3 = "123"
s4 = "python123"
s1.isdecimal() # <result> False
s2.isdecimal() # <result> False
s3.isdecimal() # <result> True
s4.isdecimal() # <result> False
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글