본문 바로가기

파이썬

문자열 다루기 (2024-03-12)

 

 

1. 문자열이란?
: 파이썬에서 문자열은 텍스트 데이터를 다루는 데 사용되는 중요한 데이터 타입입니다. 문자열은 작은 따옴표(')나 큰 따옴표("), 세 개의 따옴표(''', """)로 둘러싸인 텍스트로 표현됩니다.

 

#작은 따옴표와 큰 따옴표

str1 = '오늘도 즐거운 파이썬 수업'

print(str1)

str2 = "오늘도 즐거운 파이썬 수업"

 print(str2)

 

#작은 따옴표 3개 연속 사용

 str3 = '''김사과 :

 오늘 수업 정말 즐겁네요

 그렇죠?'''

 print(str3)

 

# is 연산자

 str1 = 'Hello'

 str2 = 'Hello'

print(str1 is str2)     ㅡ> True

 

 str1 = 'Hello'

 str2 = 'Hi'

print(str1 is str2)     ㅡ> False

 

2. 문자열 재할당
: 파이썬에서 문자열은 불변(immutable)한 데이터 타입이므로 같은 변수에 문자열을 재할당하는 경우, 새로운 문자열 객체가 생성되고 변수는 새로운 문자열 객체를 참조하게 됩니다. 이전 문자열 객체는 변경되지 않습니다.

 

# id() ㅡ>  주소 값을 가져옴

a = 'Hello'

b = a + ', python!'       # Hello, python 이 a,b 주소와 관계없이 새롭게 메모리에 할당됨

print(b)

 

print(id(a))                                 : 139685989167216

print(id(', python'))                     : 139685987751792

print(id(b))                                 : 139685987752752

 

3. 문자열 함수와 연산자

  3-1. 문자열 길이 확인하기

  #len()
  text = 'Hello, Python!'
  print(len(text))

 

  3-2. 문자열 합치기

  name = '김사과'
  age = '20살'
  message = name + ','+ age
  print(message)

 

  3-3. 문자열 반복하기

  apple = '🍎' *10
  print(apple)

 

  3-4. 문자열 인덱싱과 슬라이싱

  str1 = '문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.'
  print(str1)
 
  #인덱싱 (0번부터 시작)
  print(str1[0])
  print(str1[1])
  print(str1[12])
  print(str1[-1])
  print(str1[-2])  

 

   #슬라이싱            #[X:Y] : Y가 되기 직전까지 -> X 부터 Y-1까지

  print(str1[:16])

  print(str1[5:20])

  print(str1[:])

 

4. 문자열 메서드
: 문자열 메서드는 문자열 객체에 적용되는 함수로, 문자열을 조작하거나 변환하는 다양한 작업을 수행할 수 있게 해줍니다.

 

  4-1. upper()와 lower()

  text = 'Hello, Python!'
 
  #대문자로 변환
  print(text.upper())

  #소문자로 변환
  print(text.lower())

 

  4-2. count()

  text = 'Hello, Python!'

  #특정 문자열의 등장 횟수 확인

  print(text.count('o'))

  print(text.count('ll'))

 

  4-3. find()

  text = 'Hello, Python!'

  #특정 부분 문자열의 첫 번째 등장 위치(인덱스)확인

  print(text.find('o'))

  print(text.find('ll'))

  print(text.find('z'))      # 없는 값을 찾으면 -1이 나옴

  print(text.rfind('o'))     # 오른쪽에서 부터 먼저 찾음

  print(text.find('o', 6))  #  인덱스 6번 이후로 찾음

 

  4-4. repalce()

  text = 'Hello, Python!'

  #문자열 대체하기

  new_text = text.replace('Python', 'World')

  print(new_text)

 

  4-5. strip()

  text = '     Hello, Python!     '

  print(text)

   #문자열 양쪽 공백 제거

  print(text.strip())

 

  4-6. split()

  text = '김사과 반하나 오렌지 이메론'
 
  #공백을 기준으로 문자열을 분리 
  names = text.split()
  print(names)                                         ㅡ> ['김사과', '반하나', '오렌지', '이메론']

 

  4-7. join()

 

  text = 'Hello'

  #문자열을 구성하는 각 요소 사이에 특정한 구분자를 삽입

   print('🐓'.join(text))                                ㅡ> H🐓e🐓l🐓l🐓o

 

 

 

<과제>

아래 결과에 대해 조사해서 작성하기

1+ 1         ㅡ > 2 

1 + 1 == 2   ㅡ> True

0.1 + 1.1   ㅡ> 1.2000000000000002

 

<실수의 오류>

실수는 무한히 많습니다. 컴퓨터에서는 숫자를 비트로 표현하는데 실수는 유한개의 비트로 
정확하게 표현할 수가 없습니다. 따라서 실수는 유한개의 비트를 사용하여 근삿값으로 표현합니다.

 

※ 두 실수가 같은지 판단할 때 math.isclose 함수 사용

import math

math.isclose(0.1 + 0.2, 0.3)          ㅡ > True

 

※  decimal 을 사용하는 방법

from decimal import Decimal

 

Decimal('0.1') + Decimal('0.2')      ㅡ>     Decimal('0.3')
Decimal(0.1) + Decimal(0.2)         ㅡ>    Decimal('0.3000000000000000166533453694')

 

<추가적으로 알게 된 내용>

※ round() : 주어진 숫자를 지정한 소수점 자릿수에 맞춰 반올림 한다.

 

round(3.141592, 2)  ㅡ> 3.14
round(3.141592, 3)  ㅡ> 3.142

 

 

※ 파이썬은 실수를 부동소수점 방식으로 표현한다

고정소수점  263.3

부동소수점  2.633 * 10^2  또는 26.33 *10^1 등으로 지수, 가수를 이용해서 소수점 위치를 
옮겨가며 표현