4일차. AI를 위한 파이썬(4)

HA_·2025년 1월 3일
0
post-thumbnail

Chpater 05. Python 자료형(2)

문자열(String) 자료형

  • 한 개 이상의 문자로 구성된 자료형
  • ‘ 또는 “로 문자열 감싸기

메모리 공간 할당

인덱싱(Indexing)

  • 각 문자는 개별 주소를 가지며 주소로 값 가져오기

  • 문자열, 리스트, 튜플 등등 자료형 타입에서 데이터 요소 하나하나에
    번호를 부여하는 것

  • 데이터 덩어리를 하나씩 또는 일부를 사용하기 위한 방법


문자열 str 타입 - 인덱스(Index)

- 인덱스(Index)

문자열을 구성하는 문자 한 개 한 개를 식별하기 위한 번호
파이썬에서 자동으로 부여함 ==> 인덱싱

  • 종류
  • 왼(앞) => 오(끝) : 0, 1, 2, ....
  • 오(끝) => 오(앞) : -1, -2, -3, ....
  • 특징
    문자 한 개 원소는 2개의 인덱스를 가짐!
  • 원소 개수 파악 내장함수 => len(데이터)

msg = "오늘은 좋은 날!!"
#      0 1 2 34 56789
#      - - - -- -----
#     10 9 8 76 54321
## - 전체 메시지 출력
print(msg, len(msg))
오늘은 좋은 날!! 10
## - '날'만 출력
print(msg[7], msg[-3])
## - '은'만 출력 => 2, -8
print(msg[2], msg[-8])
날 날
은 은
## - '좋'과 '!' 출력 => 4, 8, 9, / -6, -2, -1
print(msg[4], msg[8], msg[9])
print(msg[-6], msg[-2], msg[-1])
좋 ! !
좋 ! !
msg2 = 'Happy New Year 2025! Merry Christmas~♥'
#       0         1         2         3
#       01234567890123456789012345678901234567
#              -3        -2        -1        - 
#       87654321098765432109876543210987654321
# 전체 문자열 출력
print(msg2)
# '5'만 출력 => 18, -20
print( msg2[18], msg2[-20])
Happy New Year 2025! Merry Christmas~♥
5 5
# '2025'만 출력 => 18, -20
print( msg2[15], msg2[16], msg2[17], msg2[18])
# 2025 붙여쓰기기
print( msg2[15], msg2[16], msg2[17], msg2[18], sep='')
2 0 2 5
2025
# 'Christmas'만 출력 => 27~35
print( msg2[27], msg2[28], msg2[29], msg2[30], msg2[31], msg2[32], msg2[33], msg2[34], msg2[35])
C h r i s t m a s

슬라이싱(Slicing)

• 각 문자의 인덱스를 기반으로 문자 잘라내기

  • 형식 >> [ 시작번호: 끝번호]
  • 주의 >> 끝 번호는 포함 안됨



문자열 str 타입

슬라이싱(Slicing)

  • 전체 문자열에서 일정한 간격으로 연속된 문자열을 일부 추출하는 방법
  • 문법
  • 변수명[시작인덱스:끝인덱스+1] => 시작<= ~ < 끝+1

msg = 'Happy New Year 2025! Merry Christmas~♥'
#       0         1         2         3
#       01234567890123456789012345678901234567
#              -3        -2        -1        - 
#       87654321098765432109876543210987654321
# 전체 문자열 출력
print(msg)
# - 'Happy'만 출력
print(msg[0], msg[1], msg[2], msg[3], msg[4], sep='')
Happy New Year 2025! Merry Christmas~♥
Happy
# - 0번 이상 5미만
print(msg[0:4], msg[0:5])
Happ Happy
# - '2025!'만 출력
# - 15 ~ 29 => 15:20
print(msg[15:20])
2025!

  • 변수명[시작인덱스: ] => 시작<= ~ <끝까지
  • 변수명[ : ] => 처음부터 ~ 끝까지
msg = 'Life is too short, you need python!'
#      0         1         2         3
#      01234567890123456789012345678901234
#          -3        -2        -1
#      54321098765432109876543210987654321
# - 'Life'만 출력
print(msg[0:4], msg[:4])
Life Life
# - 'Python!'만 출력 => 28 ~ 34 / -7 ~ -1 
print(msg[28:35], msg[-7:35])  # msg[-7:0] -> 끝까지일 때, 0은 안됨!
print(msg[28:], msg[-7:])
python! python!
python! python!
# - 전체 출력
print(msg)
print(msg[ : ])
Life is too short, you need python!
Life is too short, you need python!

내장함수 len()

내장함수 len()

  • 데이터를 구성하는 원소 갯수를 알려주는 함수
  • int, float, bool 사용 못 함!
  • 여러 개의 데이터로 구성된 데이터
    (예) str 타입
  • 특징 : 요소 개수를 알면 인덱스 범위를 알 수 있음
  • 2개 => 인덱스 0 ~ 1
  • 3개 => 인덱스 0 ~ 2
  • n개 => 인덱스 0 ~ n-1

data1 = 2025        # int
data2 = 9.998       # float
data3 = True        # bool
data4 = ''          # str

기본 데이터 타입인 int, float, bool은 1개의 데이터를 저장
원소/요소가 없음! ==> len() 내장함수 사용 불가


###문자열 str 데이터 타입

- 인덱스와 슬라이싱 활용

[인덱스] 원소/요소 읽기 추출

msg = 'Pithon'
#      012345

print('msg' , msg, id(msg))
print('msg[0]' , msg[0], id(msg[0]))
print('msg[1]' , msg[1], id(msg[1]))

1번 원소의 '1' ==> 'y' 변경 <= 불가 기능 미지원
msg[1] = 'y'
=> 문자열의 원소들을 분리해서 연결
print(msg[0])
print(msg[0] + 'y') # str + str => 연결
print(msg[0] + 'y' + msg[2:]) # str + str + str => 연결


이스케이프(Escape) 문자

이스케이프(Escape) 문자

  • 이스케이프(Escape) 문자 : 특별한 의미를 가진 문자
  • 형식 : +알파벳 1개
  • 대표적인 문자
  • '\n' - new line의 기능 즉, 엔터키
  • '\t' - 탭 키 기능으로 간격
  • '\' - 파일이나 폴더의 경로 나타낼 때 사용용
  • '\'' - 인용부호 홀따옴표 의미
  • '\"' - 인용부호 쌍따옴표 의미

[1] '\n' 이스케이프 문자
msg1 = """"술이 한 잔 생각나는 밤 같이 있는 것 같아요 그 좋았던 시절들"""
msg2 = """"술이 한 잔\n생각나는 밤\n같이 있는 것 같아요\n그 좋았던\n시절들"""

print(msg1)
print(msg2)

"술이 한 잔 생각나는 밤 같이 있는 것 같아요 그 좋았던 시절들
"술이 한 잔
생각나는 밤
같이 있는 것 같아요
그 좋았던
시절들

[2] '\t' 이스케이프 문자
msg3 = """"술이 한 잔\t\t\t생각나는 밤\t같이 있는 것 같아요\t그 좋았던\t시절들"""
print(msg1)
print(msg3)

"술이 한 잔 생각나는 밤 같이 있는 것 같아요 그 좋았던 시절들
"술이 한 잔 생각나는 밤 같이 있는 것 같아요 그 좋았던 시절들

[3] '\"', '\'' 이스케이프 문자
msg3 = "오늘은 \"좋은 날\"입니다."
print(msg3)

msg3 = "오늘은 \'좋은 날\'입니다."
print(msg3)

오늘은 "좋은 날"입니다.
오늘은 '좋은 날'입니다.

[4] '\' 이스케이프 문자 = >'\U', '\n'
path = 'C:\Users\KDP-519\anaconda3' # \a -> 소리내는 문자(알람코드) # \U -> 유니코드
path = 'C:\Users\KDP-519\anaconda3'
print(path)

C:\Users\KDP-519\anaconda3

[5] raw string의 r' ', R' ', r" ", R" "
--> 문자열 안에 이스케이프 문자를 무시해주는 기능
msg1 = "오늘은\t\t좋은\t날\t\t"
msg2 = r"오늘은\t\t좋은\t날\t\t"
path = R'C:\Users\KDP-519\anaconda3'

print(msg1)
print(msg2)
print(path)

오늘은 좋은 날
오늘은\t\t좋은\t날\t\t
C:\Users\KDP-519\anaconda3

0개의 댓글