*모든 출처는 도서 "데이터 과학을 위한 파이썬 프로그래밍"입니다*
#1. 문자열의 이해
문자열(string)의 개념
- 중요하게 다뤄지는 자료형 중 하나
- 문자열 특징
- 시퀀스 자료형
- 데이터를 순차적으로 메모리에 저장
- 시퀀스 자료형
문자열의 인덱싱과 슬라이싱
- 인덱싱
- 또 다른 시퀀스 자료형인 리스트와 비슷한 특징 갖고 있음
- 상대적 주소인 인덱스 활용
- 인덱싱 사용 방법
- 형식
- 문자열 저장된 변수명[인덱스 주소]
a = 'apple' print(a[0], a[3]) #a l print(a[-1], a[-5]). #e a
- 형식
- 슬라이싱
- 주소값 활용하여 문자열의 부분 추출
- 리스트의 슬라이싱과 동일
a = 'Do it yourself!' print(a[3:6], 'and', a[-9:]) #it and yourself! print(a[:] #Do it yourself! print(a[-30:30]) #Do it yourself! print(a[::2]) #D tyusl! print(a[::-1]) #!flesuoy ti oD
- 입력
- 변수명[시작번호 : 끝번호]
- 출력
- 시작번호 문자열 ~ 끝번호 -1 문자열
- 처음부터 끝까지 출력하기
- 변수명[:]
- 건너뛸 칸수 지정하기
- 변수명[시작번호 : 끝번호 : 칸수]
- -1 → 역순으로
- 2 → 2칸씩 건너뛰기
문자열의 연산
- 변수처럼 연산 가능, 리스트 연산과 동일
- ex. 문자열과 정수형은 더하기 연산 불가.. , 곱하기 연산은 가능
- 더하기 연산→ 모든 변수가 문자열일 경우 텍스트 붙이기
- 자주 발생하는 실수
num1 = 2 print("결과는" + num1) #오류 발생
- #문자열 간덧셈으로 a = "Apple" b = "Pie" print(a + " " +b) #Apple Pie
- 곱하기 연산
print(a*2 +" " + b*2)
#AppleApple PiePie
- 특정 문자열 포함 여부 확인
if 'p' in a:
print(a)
else:
print(b)
#Apple
문자열 함수
- 문자열 다룰 때 사용하기 유용
- 함수 사용방법
- 문자열변수.함수명
- 주요 문자열 함수
- upper() ; 대문자 변환
- drama = "The Glory" drama.upper() #THE GLORY
- lower() ; 소문자 변환
- drama.lower() #the glory
- title() ; 각 단어 앞글자만 대문자로 변경
- drama.title() #The Glory
- capitalize(); 첫 번째 글자만 대문자로 변경
- drama.capitalize() #The glory
- count() ; 특정 문자 포함된 개수
- drama = 'The Glory' drama.count('l') #1 drama.upper().count('l') #0
- isdigit() ; 문자열이 숫자인지 확인
- drama.isdigit() #False
- startswith() ; 해당 문자열로 시작하는지 확인
- True or False 값으로 반환
drama.startswith('e') #False
문자열의 분리: split() 함수
- 특정 값 기준으로 문자열 분리 → 리스트로 변환
- 공백 기준으로 분리
- 매개변수 지정 X
- 공백을 기준으로 문자열 분리
- 매개변수 지정 X
- items = 'zero one two'.split() print(items) #['zero','one','two']
- 매개변수 지정 O
- test1 = 'window,mac,linux' test1.split(',') #['window','mac','linux'] #각 값을 a,b,c 변수로 언패킹 a,b,c = test1.split(',') print(a,b,c) #window mac linux #'.'을 기준으로 나누고 언패킹 test2 = 'red.blue.green' d,e,f = test2.split('.') print(d,e,f) #red blue green
문자열의 결합: join() 함수
- 문자열로 구성된 리스트 합쳐 → 하나의 문자열로 만들 때
- 사용 형태
- 구분자.join(리스트명)
- 사용 예시(1) - 구분자 사용 X
- color = ['red','blue','green'] result = ''.join(color) result #'redbluegreen'
- 리스트의 각 값이 하나의 문자열 값으로 반환됨
- 사용 예시(2) - 구분자 사용 O
- result = ' '.join(color) result #'red blue green' result = ','.join(color) result #'red,blue,green' result = '-'.join(color) result #'red-blue-green'
#2. 문자열 서식 지정
- 문자열 형식 지정 → 출력
- print() 사용하여 형식 통일 → 문자열 출력 시 유용
서식 지정의 개념
- print() 함수
- 변수 혹은 값 구분
- 콤마(,) 띄어쓰기 사용
- 변수 혹은 값 구분
- 하지만 특정 형식에 맞춰 결과 출력해야 할 경우
- ex. 세 자리 숫자 단위로 띄어쓰기, %출력…
% 서식과 format()함수
- 기본 출력 형식 외에 %서식 & format()함수 구문 사용하여 형식 지정
print(1,2,3)
#1 2 3
print('a'+''+'b'+''+'c')
#a b c
print('%d %d %d' % (1,2,3))
#1 2 3
print('{} {} {}'.format('a','b','c'))
#a b c
- '%d %d %d' % (1,2,3)
- 숫자 1,2,3이 각각 첫 %d부터 차례대로 대응되어 할당됨
- '{} {} {}'.format('a','b','c')
- 아무것도 없는 {} 공간에 ‘a’, ‘b’, ‘c’가 각각 대응되어 출력됨
- 서식 지정 출력하기의 장점
- 데이터와 출력 형식 분류 가능
- 스페이스 및 ‘+’기호 활용하는 것보다 시각적 이해 쉬움
- 데이터를 형식에 따라 다르게 표현 가능
- 문자열 → %s
- print(’%s %s’ % (’one’, ‘two’))
- 정수형 → %d
- 문자열 → %s
- 데이터와 출력 형식 분류 가능
- % 서식
- 출력 양식
- ‘%자료형 % (값)’
print('I eat %d apples.' % 3) #I eat 3 apples. print('I eat %s apples.' %'five') #I eat five apples.
- 출력 양식
변수 자료형에 따른 서식
- 자료형 마다 서식문자가 다름
- 1 개 이상의 값 할당 가능, 소괄호 사용
- 사용 예시 - 값 직접 넣을 때
print('Fruit : %s, Weight(g) : %f' % ('Apple', 0.53))
#Fruit : Apple, Weight(g) : 0.53
- 사용 예시 - 변수로 값 넣을 때
number = 3
day = 'three'
print('I ate %d apples. I was sick for %s days." %(number, day))
#I ate 3 apples. I was sick for three days.
- format() 함수
- %서식과 활용법 거의 동일
- 차이점
- 문자열 형태의 인수 사용
- 사용 방법
- ‘{자료형}’.format(인수)
- 기본 표현 형태
- print("I'm {0} years old.".format(20)) #I'm 20 years old.
- 변수 이름 활용 및 변수 자료형 지정
- age = 22; name = 'kyuree' print("I'm {0} years old.".format(age)) #I'm 22 years old. print("My name is {0} and {1} years old.".format(name, age)) #My name is kyuree and 22 years old. print('Fruit : {0}, Weight(g) : {1:.2f}'.format('Apple', 0.53))
패딩
- 여유 공간 지정 → 글자 배열 맞춤 or 소수점 자릿수 맞춤
- % 서식 & format함수 모두 패딩 기능 제공
- % 서식 패딩
- 사용 방법(1) - 글자 배열
#우측 정렬 print("%10d" % 12) # 12 #좌측 정렬 print("%-10d" % 12) #12
- "%10d" % 12
- 10자리 공간 확보
- 우측 정렬로 12 출력
- 9번째 칸부터 출력시작
- "%-10d" % 12
- 좌측 정렬로 12출력
- ‘-’ 부호 붙여줌
- 사용 방법(2) - 소수점 자릿수
#우측 정렬 print("%10.3f" % 5.9234) # 5.923 print("%10.2f" % 5.9234) # 5.92 #좌측 정렬 print("-10.2f" % 5.9234) #5.92
- "%10.3f" % 5.9234
- 10자리 공간 확보
- 소수점 셋째 자리까지 출력
- 10자리 안에 소수점도 포함됨
- format() 함수 패딩
- % 서식과 비슷
- 사용 방법(1) - 글자 배열
#우측 정렬 print("{0:>10s}".format("apple")) # apple #좌측 정렬 print("{0:<10s}".format("apple")) #apple
- "{0:>10s}".format("apple")
- 10자리 공간 확보
- 우측 정렬 출력
- 좌측 정렬?
- ‘<’ 부호 사용
- 사용 방법(2) - 소수점 자릿수
#우측 정렬 "{1:>10.5f}".format("apple" , 5.743) #' 5.74300' #좌측 정렬 "{1:<10.5f}".format("apple" , 5.743) #'5.74300 '
- "{1:>10.5f}".format("apple" , 5.743)
- 10자리 공간 확보
- 소수점 다섯 번째 자리까지 실수 출력
- 소수점도 포함
- 우측 정렬
#3. 문자열 사용 예제
1. 문자열 개수 세기 ; len()함수
3. 학번, 소속학과, 이름(성 제외) 입력받아 고유 아이디 만들기
- 문제
- 디솝 학회원들의 이이디 리스트 만들기 위해 학번, 소속학과, 이름을 하나의 문자열로 입력받고 합친다. 그다음에 각 정보가 ‘-’로 연결된 고유 아이디를 출력한다.
- 입력
- 첫째 줄에 이름, 소속학과, 학번이 담긴 문자열을 입력받는다.(*각 정보는 공백으로 나눠져있다)
- 예제 입력
- kyuree datascience 21
- 예제 출력
- kyuree-datascience-21
→ split, join 함수 활용
- 예시 코드
word = input()
print(len(word))
-
word=input() num = int(input()) print(word[num-1])
informations = input() information = informations.split() dsob_id ='-'.join(information) print(dsob_id)
'스터디 > 파이썬 스터디 강의자료' 카테고리의 다른 글
[3팀/김경은] 6차시 파이썬 스터디 - 문자열 (0) | 2023.05.02 |
---|---|
[2팀/김세연] 6차시 파이썬 스터디 - 문자열 (0) | 2023.05.01 |
[4팀/김민혜] 6차시 파이썬 스터디 - 문자열 (0) | 2023.04.28 |
[4팀/이제은] 6차시 파이썬 스터디 - 문자열 (0) | 2023.04.28 |
[4팀/김민혜] 5차시 파이썬 스터디 - 함수 (0) | 2023.04.13 |