● 문자열 슬라이싱 방법 !
=> '문자열변수[시작인덱스 : 끝인덱스 : 간격]'
=> 기본적으로 인덱스(문자열의 자리)는 '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 |