1. 문자열 정의 및 특징
- 기본적으로 ' '," " 로 감싸서 사용.
- 긴 문자열 \ 사용하여 여러줄 입력 가능.
- 입력 모습 그대로 저장하기 위해 ''' ''', """ """ 를 감싸서 사용.
- 순서 존재하므로 인덱스, 슬라이싱 사용 가능.
- 변경이 불가능(immutable)해서 인덱스로 한 단어 수정 불가.
- 문자열의 길이는 len() 함수 확인 가능.
- 문자열은 더하기(+), 곱하기(*) 가능.
# 문자열 표현 : 작은따옴표('), 큰따옴표(")
a='abc song'
b='he said, "abcd..."'
c='It\'s my computer'
d="abc song"
e="It's my computer"
f="he said, \"abcd...\""
# 개행 : 특수문자 (\), 이스케이프 코드 (\n)
g="very good\
very nicd"
h="very good\nvery nice"
# 입력 내용 그대료 표현 : 큰따옴표 3개("""), 작은따옴표 3개(''')
i="""
very good
very nice
"""
j='''
very good
very nice
'''
# 문자열 출력 : print()
print(j)
# 문자열 길이 반환 : len()
len(j)
2. 이스케이프 코드
코드 | 설명 |
\n | 문자열 안에서 줄을 바꿀 때 사용 |
\t | 문자열 사이에 탭 간격을 줄 때 사용 |
\\ | 문자 \를 그대로 표현할 때 사용 |
\' | 작은따옴표(')를 그대로 표현할 때 사용 |
\" | 큰따옴표(")를 그대로 표현할 때 사용 |
\r | 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동) |
\f | 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동) |
\a | 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 난다) |
\b | 백 스페이스 |
\000 | 널 문자 |
3. 문자열 연산
# 문자열 합 : +
'very ' + 'good!'
# 문자열 곱 : *
'very ' * 5
# 문자열 복합 연산 예시
'very ' * 5 + 'good!'
4. 문자열 인덱싱
인덱싱은 0부터 시작. 음수는 우측 끝부터로 -1부터 시작. (0과 -0은 동일하므로)
a="ABC song is very good!"
# 인덱스를 통한 문자열 부분 확인 : [위치]
a[0] # 결과 : 'A'
a[-0] # 결과 : 'A'
a[4] # 결과 : 's'
a[-1] # 결과 : '!'
a[-7] # 결과 : 'y'
5. 문자열 슬라이싱
기호 : 를 기준으로 시작위치 와 끝위치를 표현. 이때, 끝 위치는 포함하여 표현하지 않음.
(즉, [3:6] 이면 인덱스 3번 위치부터 인덱스 6번 이전 위치까지 표현.)
a="ABC song is very good!"
# 슬라이싱(끝 위치는 미포함) : [시작위치:끝위치]
a[2:10] # 결과 : 'C song i'
a[5:] # 결과 : 'ong is very good!'
a[:6] # 결과 : 'ABC s'
a[:] # 결과 : 'ABC song is very good!'
a[9:-7] # 결과 : 'is ver'
6. 문자열 포맷팅
문자열 안의 특정 부분을 변경할 수 없지만, 문자열 포맷 코드를 사용하여 문자열 안의 특정 값을 변경할 수 있도록 하는 기법.
a=3
b="three"
c=3.141592653589
# 숫자 대입
"I need %d apples" % 3 # 결과 : 'I need 3 aplles'
"I need %d apples" % a # 결과 : 'I need 3 aplles'
"I need {0} aplles".format(3) # 결과 : 'I need 3 aplles'
"I need {a} aplles".format(a=3) # 결과 : 'I need 3 aplles'
f"I need {a} aplles" # 결과 : 'I need 3 aplles'
# 문자 대입
"I need %s apples" % "three" # 결과 : 'I need three aplles'
"I need %s apples" % b # 결과 : 'I need three aplles'
"I need {0} aplles".format("three") # 결과 : 'I need three aplles'
"I need {b} aplles".format(b="three") # 결과 : 'I need three aplles'
f"I need {b} aplles" # 결과 : 'I need three aplles'
# 소숫점 표현
"%0.2f" % 3.141592653589 # 결과 : '3.14'
"%0.2f" % c # 결과 : '3.14'
"{0:0.2f}".format(3.141592653589) # 결과 : '3.14'
"{0:0.2f}".format(c) # 결과 : '3.14'
f"{c:0.2f}" # 결과 : '3.14'
# 2개 이상의 값 대입 (% 사용 시 값이 숫자인지 문자인지 확실치 않을 때는 %s 를 사용. (자동 문자열 변환됨.))
"I have %s kids and I need %d apples" % (b, a) # 결과 : 'I have three kids and I need 3 apples'
"I have %s kids and I need %s apples" % (b, a) # 결과 : 'I have three kids and I need 3 apples'
"I have {0} kids and I need {1} apples".format(b, a) # 결과 : 'I have three kids and I need 3 apples'
"I have {b} kids and I need {a} apples".format(a=3, b="three") # 결과 : 'I have three kids and I need 3 apples'
f"I have {b} kids and I need {a} apples" # 결과 : 'I have 3 kids and I need three apples'
# % 기호 사용 시엔 %% 로 사용.
"I'm in the top %d%%." % 1 # 결과 : "I'm in the top 1%."
# 정렬과 공백
"%10s!" % "test" # 결과 : ' test!'
"{0:>10}!".format("test") # 결과 : ' test!'
f"{'test':>10}!" # 결과 : ' test!'
"%-10s!" % "test" # 결과 : 'test !'
"{0:<10}!".format("test") # 결과 : 'test !'
f"{'test':<10}!" # 결과 : 'test !'
"{0:^10}!".format("test") # 결과 : ' test !'
f"{'test':^10}!" # 결과 : ' test !'
# 공백채우기
"{0:=^10}".format("test") # 결과 : '===test==='
f"{'test':=^10}" # 결과 : '===test==='
"{0:0<10}".format("3") # 결과 : '3000000000'
f"{3:0<10}" # 결과 : '3000000000'
# {} 사용 시 중괄호 표현
"{{ like }}".format() # 결과 : '{ like }'
f"{{ like }}" # 결과 : '{ like }'
7. 문자열 포맷 코드
값의 자료형이 모호할 땐 %s 로 사용하면, 자동 문자열 변환처리 됨.
코드 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수(Integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 % 자체) |
8. 문자열 관련 함수
일반적으로 문자열 변수 뒤 . 를 붙인 후 함수명을 써서 사용.
a="I need 3 apples"
b=" come on! "
c="a:b:c"
# count : 포함 문자 수량 반환
a.count('e') # 결과 : 3
# find : 인덱스 위치 반환 (없을 경우 -1 반환)
a.find('e') # 결과 : 3
a.find('x') # 결과 : -1
# index : 인덱스 위치 반환 (없을 경우 오류 발생)
a.index('e') # 결과 : 3
a.index('x') # 결과 : 오류
# join : 문자열 삽입
','.join(a) # 결과 : 'I, ,n,e,e,d, ,3, ,a,p,p,l,e,s'
# lower : 소문자로 변환
a.lower() # 결과 : 'i need 3 apples'
# upper : 대문자로 변환
a.upper() # 결과 : 'I NEED 3 APPLES'
# lstrip : 좌측 공백 제거
b.lstrip() # 결과 : 'come on! '
# rstrip : 우측 공백 제거
b.rstrip() # 결과 : ' come on!'
# strip : 좌우측 공백 제거
b.strip() # 결과 : 'come on!'
# replace : 문자열 변경
a.replace("3", "5") # 결과 : 'I need 5 apples'
# split : 문자열 나누기
a.split() # 결과 : ['I', 'need', '3', 'apples']
c.split(":") # 결과 : ['a', 'b', 'c']
'개발 이야기 > Python' 카테고리의 다른 글
Python - 06. 튜플(Tuple) 자료형 (0) | 2021.07.17 |
---|---|
Python - 05. 리스트(list) 자료형 (0) | 2021.07.17 |
Python - 03. 숫자 자료형 (0) | 2021.07.16 |
Python - 02. 기초 문법 (0) | 2021.07.15 |
Python - 01. 시작하기 (0) | 2021.07.14 |