[python] 문자열 처리하기
문자열 처리하기
문자열 합치기
+
문자열 합치기
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