파이썬 초급5 (문자열2 - 자료형)
파이썬 문자열 활용
1. 문자열 연산
문자열을 더할 수도 곱할 수도 있습니다.
1. 문자열의 덧셈
그럼 바로 들어가 보겠습니다.
파이썬 IDLE를 켜줍니다.
새로운 파일을 만들어주고 아래와 같이 선언해 줍니다.
1
2
3
|
a = "처음만나서"
b = "반갑습니다."
print(a+b)
|
cs |
실행하기 전 저장을 누르고 프로젝트 폴더에 "4 문자열 응용"이란 이름으로 저장해 줍니다.
실행하면 a의 변수에 있는 문자열과 b의 변수에 있는 문자열을 두 개를 이어서 출력합니다.
더하기 연산은 두 개의 문자열을 이어주는 역할을 합니다.
그럼 문자를 의 곱셈은 어떻게 될까요?
2. 문자열의 곱셈
방금 써 줬던 코드 밑에 바로 이어서 써줍니다.
1
|
print(a*3)
|
cs |
자 그럼 실행해 볼까요?
"처음 만나서"를 3번 출력합니다.
곱 연산자는 문자열을 반복해서 출력하는 행동을 합니다.
3. 문자열 인덱싱
인덱싱(Indexing)은 분류한다 색인한다 라는 뜻이며 실제 코드에서도 특정한 값을 가리킬 때 사용합니다.
예를 들어서 "파이썬은 너무 쉬워!"라는 문자열이 있다고 한다면 우리 보고 "너"라는 글자는 몇 번째에 있냐고 한다면 보통의 경우 6번째라고 말할 것입니다.
파이썬도 똑같다 다만 파이썬은 숫자를 0부터 세기 때문에 5번째에 있는 것입니다.
이러한 순으로 특정 문자를 가리킬 수
그럼 바로 코드로 써봅시다.
바로 저장 후 실행!
"너"라는 문자가 나왔습니다.
여기서 그럼 인덱싱의 값으로 "-1"을 넣어 보겠습니다.
코드 마지막 부분만 수정해주세요.
1
|
print(c[-1])
|
cs |

실행해 보겠습니다.
느낌표가 나왔습니다.
"c [-1]"은 이미 눈치채셨겠지만 문자열을 뒤에서부터 읽어 뒤에서 첫 번째 문자를 읽는 것입니다.
그럼 여기서 엥? "c [-0]"이어야 아닌가 하는 분들이 있을 수도 있는데 c [0]이나 똑같은 값이기 때문에 똑같은 값을 보여줍니다.
여기서 더 호기심이 많은 분들은 그럼 "파이썬"을 출력하려면
1
|
print(c[0]+c[1]+c[2])
|
cs |
이렇게 써야 하냐며 궁금하신 분들도 있을 텐데요.
물론 맞는 표현이지만 이렇게 쓴다면 코드가 비효율적이기 때문에 추천하지 않습니다.
그럼 저 표현을 깔끔하게 만들어주는 슬라이싱으로 바로 가보죠!
4. 문자열 슬라이싱
슬라이싱(Slicing)은 잘른다는 의미를 가지고 있듯 문자열을 필요한 부분만큼 자를 수 있습니다.
그럼 슬라이싱의 문법에 대해서 알아보도록 하죠!
먼저 파이썬을 출력하는 깔끔한 방법입니다.
1
|
print(c[0:3])
|
cs |
그럼 실행!!~
어떤 원리로 이렇게 잘린 건지 이해 못하신 분들도 있으실 텐데요.
print(c[0:3])을 말로 풀어쓴다면
"c의 변수에 있는 값을 0번째부터 3번째 전까지 출력해라"입니다.
다양한 예제들로 한꺼번에 설명해 드리겠습니다.
이해가 안 될 수도 있으니 본인이 직접 코드를 써보고 값을 바꿔가며 이해를 해보는 걸 추천합니다.
1
2
3
4
5
6
|
c = "파이썬은 너무 쉬워!"
print(c[2:]) #2번 문자열부터 끝까지
print(c[5:7]) #5번 문자열부터 7번 전까지
print(c[:6]) #처음부터 6번 문자열 전까지
print(c[:]) #처음부터 끝까지
print(c[3:-5]) #마이너스 역시 넣을수 있다.
|
cs |
슬라이싱 응용
상황) 주민등록번호 앞번호 6자리와 이름이 같이 들어오는 프로그램이 있다.
주민등록번호 앞자리와 이름을 나눠야 할 때 어떻게 할 수 있을까?
ex) 20200127파이썬
코드:
1
2
3
|
a = "20200127파이썬"
b = a[:8]
c = a[8:]
|
cs |
2. 문자열 포매팅
문자열 포매팅(Formatting)이란 문자열을 출력시키는 방법이다.
대표적인 예로 포맷 스트링 인자가 있으며 format함수로 집어넣는 방법이 있다.
1. 포맷 스트링 인자로 넣는 법
일단 먼저 포맷 스트링 인자 먼저 알아보자
포맷 스트링 | 설명 |
%d | 정수(Integer) |
%f | 부동소수(Float) |
%s | 문자열(String) |
%c | 문자(Character) |
%o | 8진수 |
%x | 16진수 |
이러한 포맷 스트링을 사용하는 방법은 무엇일까요?
일단 지금까지 쓴 코드를 다 지워줍니다.
그리고 아래의 코드를 써주세요 복사해도 상관없지만 코딩은 머리가 아닌 직접 써보는 걸 권장합니다.
1
2
3
4
5
6
|
a = "김하온"
print("안녕 날 소개하지 이름은 %s" % a)
b = 10
print("5 + 5 = %d 야!" % b)
c = 27.3
print("지금 밖의 온도는 %f네" % c)
|
cs |
실행해 봅시다.
"%s",'%d","%f"의 자리에 각각 맞는 자료형의 값이 들어갔습니다.
혹여나 틀린 자료형을 쓸 경우는 오류가 납니다.
코딩을 할 때 왼쪽으로 오른쪽으로 정렬하고 싶은 경우가 있을 수 있습니다.
그럴 경우는 어떻게 할까요?
1
2
3
|
print("%10s" % a) #10개의 문자열이 들어갈 공간을 만들고 값을 오른쪽부터 넣고 앞에 나머지 칸들을 공백으로 남겨둡니다.
print("%-10s직업은 여행가" % a) #반대니 왼쪽 정렬이 됩니다.
print("방금 온도는 소수점이 너무 많아 %0.1f" % c) #0.1는 소수 첫자리만 0.2의 경우 소수 둘째 자리까지 보여주며 늘릴수록 많이 보입니다.
|
cs |
이런 식으로 정렬과 소수점 자리를 끊는 법을 배웠습니다.
2. format 함수를 사용하기
format함수는 따로 데이터 타입을 지정하지 않아도 됩니다.
바로 코드로 가볼까요?
1
2
3
4
5
6
7
8
|
one = 1
apple = "사과"
print("너는 {0}살 이야?".format(3)) #숫자로 넣는방법
print("나는 {0}살 이야!".format(one)) #변수로 넣는방법
print("동해물과 {0} 마르고".format("백두산이")) #문자열로 넣는방법
print("저기 있는 {0}가 너무 탐난다".format(apple)) #변수로 넣는방법
print("{0}가 {1}개 밖에 없구나...".format(apple,one)) #변수 2개를 사용하는 방법
print("{fruit}가 {number}개나 있구나!".format(fruit=apple,number=10)) #이름으로 넣는
|
cs |
그럼 format함수를 사용할 때는 어떻게 정렬 or소수점 자르기를 해야 할까요?
1
2
3
4
5
6
7
|
print("{0:>10}".format("오른쪽")) #오른쪽으로 10칸
print("{0:<10}".format("왼쪽")) #왼쪽으로 10칸
print("{0:^10}".format("가운데")) #가운데로
print("{0:*^10}".format("가운데")) #공백을 *로 채워준다
F = 3.142592
print("{0:.4f}".format(F)) #소수점 자르기
print("{{ 중괄호 }}".format()) #중괄호를 사용하고싶을때
|
cs |

실행해 봅시다.
여기 부분은 이해가 잘 안 될 수도 있습니다.
많이 값을 바꿔보며 이해하려고 말고는 방법이 없습니다.
3. 문자열 관련 함수
여기는 코드와 주석으로 설명하겠습니다.
따로 코멘트는 붙이지 않겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
a = "abcDEF"
print(len(a)) #a의 길이를 반환한다 문자가 6개 있으니 6을 반환한다.
print(a.upper()) #a를 모두 대문자로 만들어 준다 ABCDEF를 반환한다.
print(a.lower()) #a를 모두 소문자로 만들어 준다 abcdef를 반환한다.
print(a.swapcase()) #a의 대문자는 소문자로 소문자는 대문자로 ABCdef를 반환한다.
print(a.capitalize()) #a의 앞글자만 대문자로 뒤는 모두 소문자로 Abcdef를 반환한다.
print(a.count('c')) #a에서 'c'라는 문자열이 몇개 있는지 찾는다 1개 있으므로 1을 반환한다.
print(a.find('D')) #a에서 'D'라는 문자열이 어디있는지 위치를 말해준다 3을 반환한다.
print(",".join("1234")) #각 문자열 사이에 ","를 넣어준다 1,2,3,4를 반환한다.
print(" 사과 ".lstrip()) #문자열 왼쪽 공백을 지워 준다 "사과 "를 반환한다.
print(" 사과 ".rstrip()) #문자열 오른쪽 공백을 지워 준다 " 사과"를 반환한다.
print(" 사과 ".strip()) #문자열 양쪽 공백을 지워 준다 "사과"를 반환한다.
print(a.replace("abc","123")) #문자열 abc를 123으로 바꿔준다 123DEF를 반환한다.
b = "안녕 하세요 파이썬 유저 여러분"
print(b.split()) #공백을 기준으로 리스트형태로 나눠서 만들어 준다.
a = "abacadaf"
print(a.split("a")) #"a"를 기준으로 문자열을 나눠준다 리스트형태로 반환한다.
|
cs |

자 힘들게 따라오셨습니다 마지막으로 실행!
수고하셨습니다.
※요약
문자열은 더하기 곱하기가 가능하며
문자열을 출력할 때는 스트링 인자 혹은
format이란 함수를 이용하여 할 수 있고 문자열 관련 함수를 이용해서
문자열을 지지고 볶고 할 수 있다.
※숙제
왼쪽으로 10칸 오른쪽으로 10칸씩 별을 출력하게 만든 뒤
가운데에 본인 이름을 넣어주세요.
변수 안에 "엄마 아빠 형 오빠 누나 언니 동생"을 넣고 각각 문자열을 잘라 주세요.
오늘은 파이썬 문자열의 연산과 포맷 스트링에 대해서 배워보았습니다.
문자열을 처리하는 건 파이썬에서 엄청 중요합니다 꼭! 꼭! 복습하시고
다음 편에서는 리스트 자료형에 대해서 알아보겠습니다!