문자열 다루기
일반적인 문자열을 다루는 문법은 기존 다른 코드와 비슷하다.
문자열 연산(연결, 반복)의 경우 +, *를 이용하며, 여러 줄 문자열의 경우 ''' 혹은 """로 감싸 만들면 된다.
그 밖의 조금 헷갈리는 문법들을 정리해 보았다.
문자열 조작하기
- 파이썬에서는 인덱싱과 슬라이싱이라는 두 가지 방법으로 문자열 조작이 가능하다.
인덱싱
- 문자열에서 특정 위치의 글자를 뽑아낸다.
- 공백까지 포함
- 대괄호이용
- 양수 인덱스와 음수 인덱스가 있음
text = "Hello Python"
# 양수 인덱스 사용
print(f"첫 번째 글자: {text[0]}") # H
print(f"두 번째 글자: {text[1]}") # e
print(f"여섯 번째 글자: {text[5]}") # 공백
# 음수 인덱스 사용
print(f"마지막 글자: {text[-1]}") # n
print(f"마지막에서 두 번째: {text[-2]}") # o
print(f"마지막에서 세 번째: {text[-3]}") # h
슬라이싱
- 긴 문자열에서 원하는 부분만 잘라낸다.
- 문자열[시작:끝:단계] 형식 사용
- 시작
- 자르기를 시작할 위치 지정
- 이 위치의 문자 포함
- 비워두면 처음(0)부터 시작한다는 뜻
- 음수 인덱스 사용 가능
- 끝
- 어디까지 자를지 지정
- 이 위치의 바로 앞 문자까지만 포함(미포함)
- 비워두면 끝까지 자른다는 뜻
- 음수 인덱스 사용 가능
- 단계
- 몇 개씩 건너뛰면서 자를지 정함
- 기본값은 1(한 칸씩 이동)
- 음수를 넣으면 역순으로 진행
- 시작
- 시작과 끝 위치는 생략 가능하나, 콜론(:)은 꼭 사용해야 함
phone = "010-1234-5678"
# 1. 앞자리만 가져오기
print(f"통신사 번호: {phone[:3]}") # 010
# 2. 중간 번호 가져오기
print(f"가운데 번호: {phone[4:8]}") # 1234
# 3. 끝자리 가져오기
print(f"마지막 번호: {phone[-4:]}") # 5678
numbers = "1234567890"
# 건너뛰면서 잘라내기
print(f"2칸씩 건너뛰기: {numbers[::2]}") # 13579
print(f"3칸씩 건너뛰기: {numbers[::3]}") # 1470
문자열 포맷팅
% 연산자로 포맷팅하기
% 포맷팅에서 사용하는 기호들
|기호|사용|
|—|—|
|%s|문자열(string)을 넣을 때 사용|
|%d|정수(decimal)를 넣을 때 사용|
|%f|실수(float)를 넣을 때 사용|
|%.nf|소수점 n 번째 자리까지만 표시할 때 사용|
|%nd|최소 n자리 숫자로 표시할 때 사용|
# 문자열 넣기
name = "철수"
print("내 이름은 %s입니다" % name)
# 점수 넣기
age = 12
print("내 나이는 %d입니다" % age)
# 실수 넣기
height = 158.7
print("내 키는 %f입니다" % height)
print("내 키는 %.1f입니다" % height) # 소수점 한 자리까지만 표시
# 10자리 공간 마련하기
score = 95
print("성적은 %10d점입니다" % score)
- 결과
내 이름은 철수입니다
내 나이는 12입니다
내 키는 158.700000입니다
내 키는 158.7입니다
성적은 95점입니다
여러 개의 값 넣기
- 괄호()로 묶어서 순서대로 입력
- 개수도 일치해야함
name = "영희"
age = 11
height = 145.5
# 두 개의 값 넣기
print("%s는 %d살입니다" % (name, age))
# 세 개의 값 넣기
print("%s는 %d살이고, 키는 %.1fcm입니다" % (name, age, height))
- 결과
영희는 11살입니다
영희는 11살이고, 키는 145.5cm입니다
format() 메서드로 포맷팅하기
- 중괄호{}를 사용해서 값 입력
- % 연산자보다 더 다양한 방법으로 값을 넣을 수 있음
format() 기본 사용법
{}: 순서대로 값이 들어감{0}, {1}: 순서를 지정해서 값 입력{name}: 이름을 지정해서 값 입력
# format() 메서드 사용하기
name = "민수"
age = 13
# 기본 사용법 - 순서대로 들어가요
print("저는 {}이고 {}살입니다".format(name, age))
# 순서 지정하기 - 원하는 순서로 넣을 수 있어요
print("{1}살의 {0}입니다".format(name, age))
# 이름 지정하기 - 어떤 값이 어디에 들어가는지 알기 쉬워요
print("{n}는 {a}살입니다".format(n=name, a=age))
- 결과
저는 민수이고 13살입니다
13살의 민수입니다
민수는 13살입니다
format()의 특별한 기능들
:<10: 왼쪽으로 정렬하고 10칸 확보:>10: 오른쪽으로 정렬하고 10칸 확보:^10: 가운데 정렬하고 10칸 확보:,: 천 단위 구분 기호 넣기
# format()의 특별한 기능들
number = 1234567
# 정렬하기
print("왼쪽 정렬: {:<10}!".format(number))
print("오른쪽정렬: {:>10}!".format(number))
print("가운데정렬: {:^10}!".format(number))
# 천 단위 구분하기
print("천 단위 구분: {:,}".format(number))
- 결과
왼쪽 정렬: 1234567 !
오른쪽정렬: 1234567!
가운데정렬: 1234567 !
천 단위 구분: 1,234,567
f-string 활용하기
- 파이썬 3.6 버전부터 새롭게 추가된 기능
- 문자열 앞에 f를 붙이고, 변수를 중괄호{}로 감싸서 사용
# f-string 사용하기
name = "지민"
age = 12
print(f"안녕하세요! 저는 {name}입니다.")
print(f"저는 {age}살이에요.")
- 결과
안녕하세요! 저는 지민입니다.
저는 12살이에요.
바로 계산하기
- f-string의 중괄호 안에서 계산 가능
# 바로 계산하기
score1 = 90
score2 = 85
print(f"평균 점수는 {(score1 + score2) / 2}점입니다.")
print(f"두 점수의 합은 {score1 + score2}점입니다.")
- 결과
평균 점수는 87.5점입니다.
두 점수의 합은 175점입니다.
숫자 표현하기
- 소수점 자릿수를 정하거나, 천 단위 구분 기호를 넣을 수 있음
:.2f: 소수점 둘째자리까지 표시:,: 천 단위 구분 기호를 넣어줌
# 숫자 표현하기
pi = 3.14159265
number = 1000000
# 소수점 자릿수 지정하기
print(f"파이는 {pi:.2f}입니다.") # 소수점 둘째자리까지
print(f"파이는 {pi:.3f}입니다.") # 소수점 셋째자리까지
# 천 단위 구분 기호 넣기
print(f"큰 숫자: {number:,}")
- 결과
파이는 3.14입니다.
파이는 3.142입니다.
큰 숫자: 1,000,000
문자열 메소드 활용
| 문법 | 설명 |
|---|---|
| len() | 문자열 길이 확인 |
| strip() | 문자열 앞뒤의 공백 제거. 왼쪽만 없애고 싶다면 lstrip(), 오른쪽에서만 없애고 싶다면 rstrip() 사용 |
| replace() | 문자열의 일부를 새로운 내용으로 변경. 원본은 손대지 않음 |
| find() | 문자열 위치 찾기. 찾는 내용이 있으면 위치인덱스를, 없으면 -1 반환 |
| index() | 문자열 위치 찾기. 찾는 내용이 있으면 위치인덱스를, 없으면 에러 |
| count() | 특정 내용이 몇 번 나오는지 카운트. 찾는 내용이 하나도 없다면 0 반환. 대소문자 구분함 |
| upper() | 모든 알파벳을 대문자로 변환 |
| lower() | 모든 알파벳을 소문자로 변환 |
| capitalize() | 문장 시작을 대문자로, 나머지는 소문자로 변환 |
| title() | 모든 단어의 첫 글자를 대문자로 변환 |
| split() | 문자열을 원하는 기준으로 분할 |
| splitlines() | 줄바꿈을 기준으로 분할 |
Leave a comment