Python

Python(3) 문자열 자료형

UserDonghu 2023. 9. 8. 18:49

문자열 (str)

 

x = 'hello world'
y = "hello world"
z = '''hello wolrd''' # 여러줄 가능
k = """hello world""" # 여러줄 가능

# 참고삼아 알아두기. 평생에 한 두번 볼 수 있음
# 참고로 r표기는 Django 2.x에서 url이 정규표현식을 쓰기 때문에
# 자주 볼 수도 있음. 3.x에서는 사라졌음
a = r'hello \n world' # r은 raw 날것의 의미를 지니고 있음
print(a) # hello \n world

i = '''안녕하세요
파이썬 굿굿
'''
i # 이스케이프 문자가 처리 안되어 출력
print(i) # 이스케이프 문자가 처리되어 출력

 

문자열 인덱싱

s = 'hello world'
s[0] # h
s[-1] # d
s[-11] # h

# 이거 중요
# 양수와 음수로는 한 번만 갈 수 있음.
s[-12] # error
s[100] # error

s = 'Apple CEO KimDonghu'
s[0:5:2] # 두칸씩 건너뜀
s[::-1] # 거꾸로
s[5:0:-1] # 5부터 1까지 거꾸로

s = 'picture.png' # .png를 떼려면
s[:-4] # -4를 양의 인덱스로 변환 후 슬라이싱
s[:7] # s[:-4]랑 똑같음

# 슬라이싱에서 알아두어야 할 점
# 슬라이싱이 C구현체로 되어 있어 메서드보다 통상 8배 정도 빠름.
# 슬라이싱으로 copy한 객체는 얕은 복사가 됨.

# 아래처럼 되면 x와 y는 같은 곳을 가리킴.
x = [10, 20, 30]
y = x
print(id(x), id(y)) # 132414168808640 132414168808640

# 아래처럼 되면 x와 y는 다른 곳을 가리킴
# 아래와 같이 화살표를 전혀 다른 곳을 가리키게 할 때 사용
x = [10, 20, 30]
y = x[:]
print(id(x), id(y)) # 132414168782208 132414671698560

 

문자열 메소드

s = "KimDonghu"

s.lower() # 전체를 소문자로 바꿔주는 메서드
s.upper() # 전체를 대문자로 바꿔주는 메서드

s.find('Dong'), s.index('Dong') # (3, 3)

s.find('Nam') # -1 없으면 -1을 반환
s.index('Nam') # Error 없으면 에러

 

s = 'KimDonghu'
s.count('i') # 1

s = '    KimDonghu    '
s.strip() # KimDonghu
'    ,!!  hello world   '.strip(' ,!') # 양쪽에 공백과 ,와 !를 없애줌. hello world

s = 'KimDonghu'
s.replace('Kim', 'Lee') # 원하는 문자열을 다른 문자열로 대체

'hello world'.split(' ') # 공백으로 문자열을 분리해서 배열로 ['hello', 'world']

a = '010-1000-2000'.split('-') # 01010002000로 만들기
''.join(a) # '01010002000'

 

name = 'KimDonghu'
age = 19
print('제 이름은', name, '제 나이는', age)
print('제 이름은 %s 제 나이는 %d' %(name, age))
print('제 이름은 {0} 제 나이는 {1}'.replace('{0}', name).replace('{1}', str(age)))
print('제 이름은 {} 제 나이는 {}'.format(name, age)) # format은 str의 메서드
print(f'제 이름은 {name} 제 나이는 {age}') # 권고

# 제 이름은 KimDonghu 제 나이는 19

 

'abcd1234'.isalnum() # true
'안녕'.isalnum() # true

'안녕'.isascii() # false
'hello'.isascii() # true

'hello world'.isdigit() # F
'123'.isdigit() # T
'12.3'.isdigit() # F 점을 찍으면 문자라고 인식
'10e10'.isdigit() # F 지수 표현 안됨

'hello world'.isalpha() # F 공백 때문에 F
'helloworld'.isalpha() # T

 

s = 'apple'
s.rjust(10, '-') # 문자열을 지정한 길이로 맞추고, 왼쪽을 '-'로 채우는 method
# -----apple

s.ljust(10, '-') # 문자열을 지정한 길이로 맞추고, 오른쪽을 '-'로 채우는 method
# apple-----

s.center(11, '-') #문자열을 지정한 길이로 맞추고, 양옆을 '-'로 채우는 method
# ---apple---

 

x = "42"
result = x.zfill(5)
print(result)  # 00042

filename = '1'.zfill(3) + ".jpg"
print(filename) # 001.jpg

년 = '23'
월 = '9'
일 = '8'
오늘날짜 = f'{년}/{월.zfill(2)}/{일.zfill(2)}'
print(오늘날짜) # 23/09/08

 

table = str.maketrans("abc", "123") # a는 1로 b는 2로 c는 3으로
'akbkckdkek'.translate(table) # '1k2k3kdkek'

table = str.maketrans('b', 'k', 'de') # b는 k로, de는 삭제
'abcde'.translate(table) # 'akc'

'Python' 카테고리의 다른 글

Python(6) 연산  (0) 2023.09.11
Python(5) 메서드 체이닝, 형변환  (0) 2023.09.11
Python(4) 논리 자료형, None 자료형  (0) 2023.09.11
Python(2) 숫자 자료형  (0) 2023.09.08
Python(1) 시작  (0) 2023.09.08