본문 바로가기

코딩/파이썬 기초

[Python] 파이썬 데이터 타입 (자료 형) - str

 

파이썬 내장 데이터 타입 - Text Sequence Type

  • str

str 타입은 문자열(string)을 다룰고자 할 때 사용한다.

문자열은 immutable sequence이다.

 

'Hello World'

"Hello World"

'''Hello World'''

"""Hello
World"""

'"Hello" World'  # 작은 따옴표 내 큰 따옴표 사용

"Hello\" World"  # 문자열 내 이스케이프 코드(\) 사용
	# \n , \t, \\, ...

say1 = 'Hello World'

say2 = 'Hello ' 'World'    # -> Hello World

say3 = 'Hello ' * 3        # -> Hello Hello Hello

say4 = 'Hello ' + 'World'  # -> Hello World

 

문자열의 길이 확인 : len(x)

 

# 'Hello World'

say = 'Hello World'

print(len(say)) # 내장 함수 len()
# -> 11

 

문자열 인덱싱과 슬라이싱

 

# 'Hello World'
#  ---->
#  0...
#        <----
#        ...-1

say = 'Hello World'

print(say[0])
# -> 'H'

print(say[-1])
# -> 'd'

print(say[:])
# -> 'Hello World'

print(say[0:4])
# -> 'Hell'

print(say[:4])
# -> 'Hell'

print(say[6:])  # say[6:11] , say[6:12]과 같은 결과 출력
# -> 'World'

print(say[6:-1])  # say[:10]고 같은 결과 출력
# -> 'Worl'

print(say[::2])
# -> 'HloWrd'

print(say[-1::-1])
# -> 'dlroW olleH'

say[0] = ''  # 문자열은 immutable (불변) 속성을 가지고 있어 문자열 값 변경은 불가
TypeError: 'str' object does not support item assignment

 

문자열 포매팅 : format(x, ...)

 

x = 1
y = 2

print('{0} + {1} = {2}'.format(x, y, x+y))
# -> '1 + 2 = 3'

print('{} + {} = {}'.format(x, y, x+y))
# -> '1 + 2 = 3'

print('{0} + {0} = {1}'.format(x, x+x))
# -> '1 + 1 = 2'

print('{} + {} = {}'.format(x, x+x))
IndexError: Replacement index 2 out of range for positional args tuple

print('{x} + {y} = {x+y}')
# -> '{x} + {y} = {x+y}'

print(f'{x} + {y} = {x+y}')
# -> '1 + 2 = 3'

print('{num_x} + {num_y} = {sum_}'.format(num_x=x, num_y=y, sum_=x+y))
# -> '1 + 2 = 3'

print(f'{x} + {y} = {sum_}'.format(sum_=x+y))
NameError: name 'sum_' is not defined

 

문자열 정렬

 

print('{:<20}'.format('Hello'))  # 20 문자 기준 왼쪽 정렬
# -> 'Hello               '

print('{:>20}'.format('Hello'))  # 20 문자 기준 오른쪽 정렬
# -> '               Hello'

print('{:^20}'.format('Hello'))  # 20문자 기준 가운데 정렬
# -> '       Hello        '

print('{:.<20}'.format('Hello'))  # 공잭을 문자 '.'로 채움
# -> 'Hello...............'

print('{0:>10}'.format(1000))
# -> '      1000'

print('{0:0>10}'.format(1000))
# -> '0000001000'

print('{0:>5.5f}'.format(1.23))
# -> '1.23000'

 

문자열 관련 str 메서드 (= 함수)

 

  • str.count
  • str.find
  • str.index
  • str.join
  • str.upper
  • str.lower
  • str.lstrip
  • str.rstrip
  • str.strip
  • str.replace
  • str.split
say = 'Hello World'

print(say.count('H'))
# -> 1

print(say.count('H'))
# -> 0

print(say.find('l'))     # 첫 문자 'l'의 인덱스 정보 반환
# -> 2

print(say.find('l', 3))  # str.find(sub[, start[, end]])
# -> 3

print(say.find('l', 4))
# -> 9

print(say.find('z'))     # 문자열에서 찾는 문자가 없다면, -1 값 반환
# -> -1

print(say.index('l'))    # str.index(sub[, start[, end]])
# -> 2

print(say.index('z'))    # 문자열에서 찾는 문자가 없다면, 오류 발생
ValueError: substring not found

print('.'.join(say))
# -> 'H.e.l.l.o. .W.o.r.l.d'

print(say.upper())
# -> 'HELLO WORLD'

print(say.lower())
# -> 'hello world'

say2 = '  Hello  '

print(say2.lstrip())  # 왼쪽 공백이 삭제된 문자열 반환
# -> 'Hello  '

print(say2.rstrip())
# -> '  Hello'

print(say2.strip())
# -> 'Hello'

print(say2.strip(' Ho'))  # str.strip([chars])
# -> 'ell'
#  -> 맨 왼쪽, 오른쪽부터 시작하여 chars에 속하는 문자 모두가 삭제된 문자열 반환

print(say2.replace(' ', '!'))
# -> '!!Hello!!'

print(say2.replace('e', 'E'))
# -> '  HEllo  '

print(say2.split())  # 문자열을 나눈 후 리스트 반환
# -> ['Hello']

print(say2.split('e'))
# -> ['  H', 'llo  ']