Python 프로그래밍/Python 초급

파이썬 초급5 (문자열2 - 자료형)

NOP(No Operation) 2020. 1. 27. 04:21

파이썬 문자열 활용


1. 문자열 연산


문자열더할 수곱할 수도 있습니다.

 

1. 문자열의 덧셈


그럼 바로 들어가 보겠습니다.

 

파이썬 IDLE를 켜줍니다.

새로운 파일만들어주고 아래와 같이 선언해 줍니다.

1
2
3
= "처음만나서"
= "반갑습니다."
print(a+b)
cs

 

실행하기 전 저장을 누르고 프로젝트 폴더"4 문자열 응용"이란 이름으로 저장해 줍니다.

 

실행하면 a변수에 있는 문자열 b변수에 있는 문자열두 개를 이어서 출력합니다.

더하기 연산두 개의 문자열을 이어주는 역할을 합니다.

 

그럼 문자를 의 곱셈은 어떻게 될까요?

 

2. 문자열의 곱셈

 


방금 써 줬던 코드 밑에 바로 이어서 써줍니다.

1
print(a*3)
cs

 

자 그럼 실행해 볼까요?

 

 

"처음 만나서"를 3번 출력합니다.

곱 연산자문자열을 반복해서 출력하는 행동을 합니다.

 

 

3. 문자열 인덱싱


인덱싱(Indexing)분류한다 색인한다 라는 뜻이며 실제 코드에서도 특정한 값가리킬 때 사용합니다.

 

예를 들어서 "파이썬은 너무 쉬워!"라는 문자열있다고 한다면 우리 보고 "너"라는 글자는 몇 번째에 있냐고 한다면 보통의 경우 6번째라고 말할 것입니다.

 

파이썬도 똑같다 다만 파이썬은 숫자를 0부터 세기 때문에 5번째에 있는 것입니다.

 

 

이러한 순으로 특정 문자가리킬 수

 

그럼 바로 코드로 써봅시다.

1
2
= "파이썬은 너무 쉬워!"
print(c[5])
cs

 

바로 저장 후 실행!

 

 

"너"라는 문자가 나왔습니다.

 

여기서 그럼 인덱싱값으로 "-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
= "파이썬은 너무 쉬워!"
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
= "20200127파이썬"
= a[:8]
= 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
= "김하온"
print("안녕 날 소개하지 이름은 %s" % a)
= 10
print("5 + 5 = %d 야!" % b)
= 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("가운데")) #공백을 *로 채워준다
= 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
= "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를 반환한다.
= "안녕 하세요 파이썬 유저 여러분"
print(b.split()) #공백을 기준으로 리스트형태로 나눠서 만들어 준다.
= "abacadaf"
print(a.split("a")) #"a"를 기준으로 문자열을 나눠준다 리스트형태로 반환한다.
cs

 

자 힘들게 따라오셨습니다 마지막으로 실행!

 

 

수고하셨습니다.

 

※요약

더보기

문자열은 더하기 곱하기가 가능하며

문자열을 출력할 때는 스트링 인자 혹은

format이란 함수를 이용하여 할 수 있고 문자열 관련 함수를 이용해서

문자열을 지지고 볶고 할 수 있다.


※숙제

더보기

왼쪽으로 10칸 오른쪽으로 10칸씩 별을 출력하게 만든 뒤

가운데에 본인 이름을 넣어주세요.

변수 안에 "엄마 아빠 형 오빠 누나 언니 동생"을 넣고 각각 문자열을 잘라 주세요.

 

오늘은 파이썬 문자열의 연산과 포맷 스트링에 대해서 배워보았습니다.

문자열을 처리하는 건 파이썬에서 엄청 중요합니다 꼭! 꼭! 복습하시고

다음 편에서는 리스트 자료형에 대해서 알아보겠습니다!