● 문자열 슬라이싱 방법 !

=> '문자열변수[시작인덱스 : 끝인덱스 : 간격]'

=> 기본적으로 인덱스(문자열의 자리)는 '0'부터 시작

# 변수 선언 a는 문자열!
a = 'Hello World'


# 문자열 a 슬라이싱(잘라내기)
print(a[0:5])
:Hello


# 
print(a[6:11])
:World


# 인덱스에 '-'를 붙이면 문자열의 마지막 인덱스부터 읽는다.
print(a[-11:-6])	# a[-1]='d'이므로, a[0] = a[-11], a[-6] = a[4]
:Hello


# a[-1]의 값이 'd'이다. 하지만 슬라이싱을 할때, 끝인덱스는 출력되지 않는다. 밑의 코드를 보자.
print(a[-5:-1])
:Worl


# 이런 식으로 끝인덱스를 생략해주면, 문자열의 끝까지 출력하라는 의미가 되어 끝까지 출력된다.
print(a[-5:])
:World


# 시작인덱스, 끝인덱스 생략 -> 문자열 처음부터 끝까지 출력. 간격은 '2'단위
print(a[::2])
:HloWrd


# 인덱스 0부터 6까지 출력
print(a[:6])
:Hello

● 문자열 포매팅(Formatting) 방법 !

코드 설명
%s 문자열(String)
%c 문자 1개(Character)
%d 정수(Integer)
%f 부동 소수(Floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 '%'자체)
# 숫자 바로 대입
"I eat %d apples."%4
:I eat %d apples 4


#
a=4
"I eat %d apples."%a
:'I eat 4 apples.'


# 문자열 바로 대입
"I eat %s apples."%"five"
:'I eat five apples.'


# 문자열 포맷 코드 활용
# %s를 숫자와 함께 사용하면, 공백과 정렬 표현 가능
"%11s"%"hi"
:'         hi'

#
"%-5sJane"%"hi"
:'hi   Jane'


# 소수점 표현하기
"%0.5f" %2.43243234
:'2.43243'


#
"%11.5f" %2.43243234
:'    2.43243'


# f 문자열 포매팅 (파이썬 3.6버전 부터 가능)
name = "홍길동"
age = 25
f'나의 이름은 {name}입니다. 나이는 {age+2}입니다.'
:'나의 이름은 홍길동입니다. 나이는 27입니다.'

● 문자열 관련 함수 !

함수 설명
문자열.count('문자') 문자의 개수를 세는 함수
문자열.find('찾을문자') 찾는 문자열이 처음 나온 위치값 반환 / 없으면 -1 반환
문자열.index('찾을문자') find함수와 마찬가지로, 찾는 문자열이 처음 나온 위치값 반환
단, 찾는 문자열이 없다면 오류 발생
"문자".join('문자열') '문자열' 사이에 "문자"를 삽입
문자열.upper() / 문자열.lower() 소문자를 대문자로 변환 / 대문자를 소문자로 변환
문자열.lstrip() / 문자열.rstrip()
문자열.strip()
가장 왼쪽/오른쪽 에 있는 연속된 공백 삭제
양쪽에 있는 연속된 공백 삭제
문자열.replace('문자열1','문자열2') '문자열1'을 찾고, '문자열2'로 교체
문자열.split('구분자') 문자열을 '구분자'를 기준으로 나누어 리스트로 나타냄
# count() => 문자의 개수를 세는 함수
a = "hobby"
a.count('y')
:1


# find() => 찾는 문자열이 처음 나온 위치(인덱스값) 반환 / 없으면 -1 반환
a = "Python is the best choice"
a.find("e")
:12


#
a.find("k")
:-1


# index() => find와 마찬가지로, 찾는 문자열이 처음 나온 위치 반환
# 단, 찾는 문자열이 없다면 오류 발생
a = "Life is too short"
a.index("o")


#
a.index("z")
:---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [43], in <cell line: 1>()
----> 1 a.index("z")
ValueError: substring not found


# join() => 문자열 삽입
",".join("cake")
:'c,a,k,e'


# upper() => 소문자를 대문자로 변환
a = "hello"
a.upper()
:'HELLO'


# lower() => 대문자를 소문자로 변환
a = "HELLO"
a.lower()
:'hello'


# lstrip() => 가장 왼쪽에 있는 연속된 공백 삭제
a = "    hello"
a.lstrip()
:'hello'


# rstrip() => 가장 오른쪽에 있는 연속된 공백 삭제
a = "    hello     "
a.rstrip()
:'    hello'


# strip() => 양쪽에 있는 연속된 공백 삭제
a = "    hello     "
a.strip()
:'hello'


# replace(찾을문자열,교체할 문자열) -> 찾을문자열을 교체할 문자열로 바꾸기 
a = '나는 초코우유 좋아. 초코우유 최고'
print(a.replace('초코','딸기'))
print(a)
:나는 딸기우유 좋아. 딸기우유 최고
나는 초코우유 좋아. 초코우유 최고


# split('구분자') -> 문자열을 구분자를기준으로 나누기 
phone = '010-123-4567'
phone.split('-') # '-' 를 기준으로 나눠서 리스트로 저장된다.
:['010', '123', '4567']

※ 연습문제

- 사용자의 영문 이름을 입력받아 성과 이름 순서를 바꾸어서 출력하는 프로그램을 작성하세요.
- 성과 이름은 공백으로 구분합니다.

#
a = input('사용자의 이름을 영문으로 입력하세요 : ')
b = a.split(' ')
print(w[::-1])  # w가 리스트가 되었기 때문에, 리스트의 인덱스가 바뀌어 가능함
:사용자의 이름을 영문으로 입력하세요 : Hong gildong
['gildong', 'Hong']


#
full_name = input('사용자의 이름을 영문으로 입력하세요 : ')
space = full_name.find(' ')
print(space)
first_name = full_name[:space]
last_name = full_name[space+1:]
print(first_name,last_name)
print(last_name, first_name)
:사용자의 이름을 영문으로 입력하세요 : Hong gildong
3
Hong gildong
gildong Hong

'Python 기초 공부' 카테고리의 다른 글

알고리즘 연습  (1) 2023.02.18
if(조건문) / for(반복문) / while(반복문)  (0) 2023.02.18
기본자료형 다루기 / 산술연산,문자연산  (0) 2023.02.16
변수 자료형  (0) 2023.02.16
파이썬 맛보기  (0) 2023.02.16

+ Recent posts