3. Python - 문자열 처리(문자열, 문자열 슬라이싱(Slicing), 문자열 함수(function))
문자열은 파이썬의 자료형(Data Type) 중, 하나로 이를 처리하기 위한 다양한 메서드와 함수가 제공된다.
* 문자열의 자료형에 대한 내용은 이전 포스팅을 참고해주세요 :)
1. Python - 자료형(Data type) 종류(스칼라, 컨테이너, 시퀀스) 및 주로 사용되는 자료형 (수치, 불, 군
파이썬은 다른 프로그래밍 언어인 C, Java와는 다르게 변수를 선언할 때, 자료형을 명시적으로 선언하지 않는다. 즉, 변수를 미리 지정하지 않아도 된다. 이러한 특징을 가진 프로그래밍 언어를 '
01-study-for-me.tistory.com
문자열(String)
하나 이상의 연속된 문자(Character)들의 나열로, 시퀀스(Sequence) 자료형에 해당된다.
큰 따옴표(")나 작은 따옴표(')를 사용해 문자를 감싸는 형태로 문자열을 생성한다.
( 큰 따옴표 3개로도 생성할 수 있다. (""") 이때, 문장의 앞뒤에 줄바꿈이 추가되는 것을 확인하자.)
문자열 슬라이싱(Slicing)
연속적인 객체에 범위를 지정하여 원하는 부분으로 잘라내는 작업을 말한다.
(이때, 연속적인 객체이므로 문자열 뿐만 아닌, 튜플 / 리스트에도 사용할 수 있다.)
슬라이싱 작업을 수행하면 새로운 객체를 생성한다.
슬라이싱을 위해 접근할 때는 인덱스를 지정하여 접근 및 수행한다.
문자열 [ 시작 인덱스 값(start) : 끝 인덱스 값(end) : step ] |
- 시작 인덱스 값(start), 끝 인덱스 값(end), step 모두 양수와 음수를 가질 수 있다.
- start : 슬라이싱을 시작할 위치로 기본 값은 0이다.
- end : 슬라이싱을 끝내고자 하는 위치로, 지정할 수 있으며 빈칸으로 입력 시 마지막까지 수행한다.
- step : 기입 시, 해당 숫자만큼 건너뛰어 추출한다.
str = "Hello World!"
print(str[2:7]) # 결과 : llo W
print(str[4:]) # 결과 : o World!
print(str[:3]) # 결과 : Hel
### tip. 슬라이싱한 값을 사용하고 싶다면 따로 저장해야 한다!
str2 = str[:5]
print(str2) # 결과 : Hello
다양한 문자열 처리함수
파이썬에서는 문자열을 다루기 위한 다양한 문자열 함수를 제공하고 있다.
함수이름 | 의미 | 사용법 |
lower() 또는 casefold() | 소문자로 변환 | "PYTHON".lower() # 결과 : python |
upper() | 대문자로 변환 | "python".upper() # 결과 : PYTHON |
isupper() / islower() | 대문자 / 소문자인지 확인 결과로는 True, False 출력 (tip. 대소문자가 모두 입력된 경우에는 False가 나온다.) |
"python".isupper() # 결과 : False |
replace(변경할 문자, 대체할 문자, 횟수) | 문자열 변환 | "learning java".replace("java","python") # 결과 : learning python |
index(문자, start, end) | 찾고자 하는 문자열의 인덱스 값 (없는 경우 에러 발생) |
"learning python".index("p") # 결과 : 9 |
find (문자, start, end) | 찾고자 하는 문자열의 인덱스 값 (없는 경우 -1 출력) |
"learning python".find("f") # 결과 : f |
count(문자열) | 문자열이 포함된 횟수 | "learning python".count("n") # 결과 : 3 |
len(문자열) | 문자열 길이 | len("python") # 결과 : 6 |
함수이름 | 의미 | 사용법 |
capitalize() | 문자열의 첫번째(index 0) 문자를 대문자로 변환 | "python".capitalize() # 결과 : Python |
center(width, 지정 문자열) | 문자열을 가운데 정렬 공백을 채움. (공백 외에도 지정 가능) |
"Python".center(16,"*") # 결과 *****Python***** |
startswith(문자열) / endswith(문자열) |
문자열 시작 또는 끝에 해당 문자로 끝나는 경우 True, 그렇지 않은 경우 False | "learning python".endswith("python") # 결과 : True |
format(문자열, ...) | 문자열 안에서 표현할 값의 형식을 지정 | * 추가설명 참고 |
isalnum() | 문자열이 알파벳(a-z, A-Z) or 숫자(0-9)로 이루어졌는지 확인 |
'abc123'.isalnum() # 결과 : True |
isalpha() | 문자열이 알파벳(a-z, A-Z)으로만 이루어져 있는지 확인 | '123!'.isalpha() # 결과 : False |
isdecimal() | 문자열이 십진수(decimal)로 이루어져 있는지 확인 | '0b1000'.isdecimal() # 결과 : False |
join(문자열 또는 리스트) | 문자열이나 리스트를 구분자를 통해 결합 | * 추가설명 참고 |
split(구분자, 최대횟수) | 구분자를 기준으로 문자열을 나눔. 리스트 형태로 반환된다. |
a = "java, python, c" a.split(",") # 결과 : ['java', ' python', ' c'] |
strip() | 문자열의 앞뒤 공백 문자를 제거. (문자열 사이에 공백문자는 제거하지 않음) |
" learning python ".strip() # 결과 : learning python |
swapcase() | 대문자를 소문자로, 소문자를 대문자로 변환 | "Python".swapcase() # 결과 : pYTHON |
zfill(길이) | 문자열 왼쪽에 '0'을 채워 길이를 맞추는 함수. 이때, 지정된 길이가 문자열의 길이보다 작은 경우는 수행되지 않는다. |
"python".zfill(10) # 결과 : 0000python |
format() 함수
'format()' 함수는 문자열을 구성하고 출력할 때 사용되는 함수로,
지정된 형식에 맞게 값을 포맷하는데 사용된다.
name = "홍길동"
age = 20
print("안녕하세요, 저는 {}살 {}입니다." .format(age, name))
print("안녕하세요, 저는 {0}살 {1}입니다." .format(age, name))
print("안녕하세요, 저는 {age}살 {name}입니다." .format(age=20, name="홍길동"))
print("안녕하세요, 저는 {age}살 {name}입니다." .format(name="홍길동", age=20))
# tip. 아래 방법은 python 3.6 이상에서만 사용 가능합니다.
print(f"안녕하세요, 저는 {age}살 {name}입니다.")
# 출력 결과 : 안녕하세요, 저는 20살 홍길동입니다.
join() 함수
문자열이나 리스트를 특정 구분자를 이용하여 결합하는 함수로,
여러 개의 문자열이나 리스트의 요소들을 하나의 문자열로 합칠 때 사용한다.
language = ['python', 'c', 'java']
print(', '.join(language)) # 출력 결과 : python, c, java
a = "사과"
b = "바나나"
c = "체리"
print('&'.join([a,b,c])) # 출력 결과 : 사과&바나나&체리
이때, 여러 문자열을 합칠 때는 [ ] 안에 문자열을 넣어 사용한다.