Python

[Python] 문자열(인덱싱, 슬라이싱)

퓨어맨 2022. 6. 10. 09:35
# 문자열 기호 '', ""
# s = 'she's gone'
# s

# 1. 표현하고자 하는 따옴표랑 다른 종류의 따옴표를 문자열 기호로 사용
s = "she's gone"
print(s)

# 2. 문자열 조합(이스케이프코드) 사용
# \n -> 개행 (이스케이프)
# \' -> 단따옴표(이스케이프)
s2 = 'she\'s gone'
print(s2)

s3 = 'he said that "she is gone"'
s4 = "he said that \"she is gone\""
print(s3)
print(s4)

s = "제목:풀꽃 시인:나태주\n자세히 보아야 예쁘다.\n오래 보아야 사랑스럽다.\n너도 그렇다."
print(s)

# 추가적으로 살펴볼 문자열 기호
# '''문자열'''
# """문자열"""
s2 = '''제목:풀꽃
시인:나태주

자세히 보아야 예쁘다.
오래 보아야 사랑스럽다.
너도 그렇다.'''
print(s2)

''' 문자열 ''' >> 입력한 값 그대로 출력 가능

 

- 문자열 인덱싱&슬라이싱  
 - 인덱싱: 무엇인가를 콕 찝어서 가리킴  
 - 슬라이싱: 무엇인가를 범위를 지정하여 잘라냄  
 - 공통점: 인덱스 번호를 활용해 데이터에 접근

 

s_name = 'My name is JY'
# M 접근
print(s_name[0])
# J 접근
print(s_name[11])
# -2
print(s_name[-2])

# 슬라이싱
# 범위 어디부터 어디까지 -> : (콜론)
# 대상문자열[첫인덱스:끝인덱스+1]
# 첫인덱스 <= x < 끝인덱스

# name 출력해보기 !
print(s_name[3:7])
# is 출력해보기
print(s_name[-5:-3])

# My name 슬라이싱 해보기
print(s_name[0:7])
# 0 생략가능 - 첫 인덱스 기본값
print(s_name[:7])

# JY 출력하기, 접근하기
# 끝인덱스 생략가능 - 맨뒤까지 슬라이싱 할때
print(s_name[11:13])
print(s_name[11:])

# 모든 문자열 슬라이싱
# 대상문자열[첫인덱스,끝인덱스:]
print(s_name[::4])
# 문자열을 뒤에서 앞으로 읽기(거꾸로 읽기)
print(s_name[::-1])

day = "2020년 3월 3일의 날씨는 맑음입니다."
print('날짜:', day[:11])
print('날씨:', day[-6:-4])
# 인덱스를 뒤에서 세더라도 슬라이싱은 앞에서부터

 

문자열 포매팅(formatting) : 문자열 안의 특정한 값을 바꿔야 할 경우 사용

# format 함수 포매팅
# 변수 선언
year = '2022'
month = '4'
day = '26'
ed = '~'
print('{}년 {}월 {}일의 날씨는 맑음입니다{}'.format(year,month,day,ed))
print('{0}년 {1}월 {3}일의 날씨는 맑음입니다{2}'.format(year,month,day,ed))

{}안의 번호에 따라서 입력한 값이 달라짐

 

# f문자열 포매팅 - 가독성(사람이 읽을때 이해가 잘됨)
ed = '~'
f'2020년 3월 3일의 날씨는 맑음입니다{ed}'

lang = 'python'

s = f"Life is too short, you need '{lang}'"

print(s)

x = 100
y = 200
sum2 = x + y
print(f"{x}와 {y}의 합은 {sum2}입니다.")
print(f'{x}와 {y}의 합은 {sum2}입니다.')
print('{}와 {}의 합은 {}입니다.'.format(x,y,sum2))

# 문자열 내부 포함된 문자 개수 세기
# count('문자')
s_name.count('m') # 1등장
s_name.count('M') # 1등장
# 대소문자를 구별해서 카운팅

결과 값 1

 

# 대문자 -> 소문자
# lower()
# 소문자 -> 대문자
# upper()
s_name.lower()
s_name.upper().count('M')

결과 값 2

 

# 문자의 위치를 알려주는 함수
# find('찾는문자'), index('찾는문자')
s_name.find('y')
s_name.index('y')

# 없는 문자 찾을때 차이점 발생
s_name.find('h') # -1 결과 반환 : 찾는 값 없음
s_name.index('h') # 에러 발생 ValueError: substring not found

('y') 값 찾을때 결과 값 1 출력

 

# 특정 문자를 찾아서 다른 문자로 대체하는 함수
# replace('찾는문자','대체문자')
s_name.replace('My','')

# 문자열 전처리할 때 사용
# 전처리 => 데이터를 깔끔하게 정리함
# 특정문자를 제거할 때
tp = s_name.replace('My','')

# 공백 제거 함수
# strip() : 양쪽 공백 제거
# lstrip() : 왼쪽 공백 제거
# rstrip() : 오른쪽 공백 제거
tp.rstrip()

 

# split('분리기준문자')
# 문자열 나누는 함수
# [1,2,3,4] list 자료구조
s_name.split(' ')

# 문자에서 원하는 데이터 접근
name = 'brown,Mr.name'
# name.split(',')[1][0:2]
name.split(',')[1].split('.')[0]

article = "[요기요, 화이트데이 맞이 '선물하기' 이벤트 진행] 기사입력 2022.03.10. 작성자 이나영기자 요기요는 화이트데이를 앞두고 요기요 선물하기 서비스를 이용하는 고객들을 위한‘너와 나의 선물고리’이벤트를 진행한다고 10일 밝혔다."
f_index = article.find('2022')
print(f_index)

day = article[35:45]
print(f'기사가 업로드된 일자는 {day} 입니다.')

# 2022 첫인덱스 찾아내기
st_index = article.find('2022')

# 작성자 인덱스 찾아내기
ed_index = article.find('작성자')-2
print(st_index, ed_index)

# day 변수 추출 데이터 담아보기
day = article[st_index:ed_index]
print(f'기사가 업로드된 일자는 {day} 입니다.')

pin = "881120-1068234"
yyyymmdd = pin[:6]
num = pin[7:]
print(yyyymmdd)
print(num)
print(pin[7:8])

a = "a:b:c:d"
b = a.replace(':','#')
print(b)

'Python' 카테고리의 다른 글

[Python] 반복문(while, for)  (0) 2022.06.27
[Python] 리스트, 튜플  (0) 2022.06.22
[Python] 조건문  (0) 2022.06.22
[Python] 연산자(산술,지수,복합,비교,멤버)  (0) 2022.06.15
[Python] 변수, 자료형  (0) 2022.06.10