KDT 수업/Python

[파이썬] 05. 문자열 다루기

니니는 진짜 전설이다 2023. 3. 6. 17:02

1. 문자열 다루기

  • 변수에 문자열을 담을 수 있다.
  • ' ' 작은 따옴표를 이용해도 되고, " " 큰따옴표를 이용해도 된다.
str1 = '오늘은 파이썬 3일차 수업입니다'
print(str1)
>>오늘은 파이썬 3일차 수업입니다

str2 = "오늘은 파이썬 3일차 수업입니다"
print(str2)
>> 오늘은 파이썬 3일차 수업입니다
  • ' 또는 " 를 문자열로 출력하고 싶은 경우에는 ' '' '' ' 또는 '' ' ' '' 로 사용한다.
str3 = '류지 : "오늘은 파이썬 3일차 수업입니다:"'
print(str3)
str4 = "류지 : '오늘은 파이썬 3일차 수업입니다:'"
print(str4)

>>
류지 : "오늘은 파이썬 3일차 수업입니다:"
류지 : '오늘은 파이썬 3일차 수업입니다:'
  • 변수에 주석을 담을 수 도 있다.

''' 
여기는 주석!!  
'''

str5 = ''' 류지: 
파이썬 3일차 수업 '''
print(str5)
>>
 류지: 
파이썬 3일차 수업

 

 

2. 문자열 인덱싱(indexing)

  • 문자열에 번호를 매겨 특정 문자를 찾을 수 있는 기능.
  • 0부터 시작한다.
  • -1은 문자열의 뒤에서부터 세는 첫번째 순서이다.
str = '문자열에 번호를 매겨 특정 문자를 찾을 수 있는 기능'
print(str)
>>문자열에 번호를 매겨 특정 문자를 찾을 수 있는 기능

print(str[0])
print(str[1])
print(str[12])
print(str[-1])  #뒤에서부터 셈
print(str[-2])
>>
문
자
특
능
기

 

 

3. 문자열 슬라이싱(slicing)

  • 문자열에서 원하는 부분을 잘라 반환해주는 기능.
  • 변수명[왼:오] 에서 왼쪽부터 오른쪽 전까지를 추출한다.
    왼쪽이 비어있으면 처음부터 오른쪽 입력값 전까지 추출한다는 뜻이고, 오른쪽이 비어있으면 왼쪽 입력값부터 끝까지 추출한다는 뜻이다.
str = '문자열에서 원하는 범위를 추출하는 기능'
print(str)
>> 문자열에서 원하는 범위를 추출하는 기능

print(str[0:5])    # 0부터 5전까지 => 0부터 4까지
print(str[7:13])
print(str[:13])    # 왼쪽을 안써주면 처음부터! 처음부터 13 직전까지
print(str[6:])     # 오른쪽을 안써주면 끝까지! 6부터 끝까지
>>
문자열에서
하는 범위를
문자열에서 원하는 범위를
원하는 범위를 추출하는 기능

 

 

4. 문자열 함수

  • count( )
    : 문자열에서 매개변수로 전달된 문자열의 출현 횟수를 반환함. 해당 문자가 몇번 나오는지를 알려준다.
'문자열 함수는 문자열과 관련된 여러가지 기능들을 담고 있다'.count('문')
>>2

# 변수에 문자열을 넣어서 count()를 이용하는 경우
str = '문자열 함수는 문자열과 관련된 여러가지 기능들을 담고 있다'
str.count('문')    # str안에 '문'자가 몇번 나왔는지 알려줌 
>>2

존재하지 않는 문자를 찾는 경우 0개라고 나온다.

print(str.count('문자'))
print(str.count('문장'))
>>
2
0

 

count( ) 함수는 string형에만 쓸 수 있는데 숫자형을 입력하는 경우에는 오류가 난다.(AttributeError)

num = 10
num.count('10')
>> AttributeError: 'int' object has no attribute 'count'

 

 

  • find( )
    : 매개변수로 전달된 문자열이 처음 나오는 위치를 인덱스로 반환시킨다.
print(str.find('문'))    # index번호가 0
print(str.find('함'))    
>>
0
4

# rfind() : 뒤에서부터 찾기
print(str.rfind('문'))  # 문자열이 나오는 위치를 끝에서부터 찾아 반환시킨다
>>8

find()를 이용해 없는 문자를 찾는 경우 -1이 나온다.(인덱스에는 음수가 없기 때문)

#없는 문자 찾을 때
print(str.find('뿅'))
>> -1

 

 

  • index( ) 
    : 매개변수로 전달된 문자열이 처음 나오는 위치를 인덱스로 반환한다. 
     find()와는 다르게 찾는 문자가 없는 경우 에러가 뜬다.
print(str.index('문'))   #0
print(str.index('함'))   #4
print(str.index('뿅'))   # 값이 없는 경우 ValueError: substring not found 
>>
0
4
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-14-4658d8097ca5> in <module>
      2 print(str.index('문'))   #0
      3 print(str.index('함'))   #4
----> 4 print(str.index('뿅'))   # 값이 없는 경우 ValueError: substring not found   

ValueError: substring not found

 

  • replace( )
    : 특정 문자열을 치환해준다.
str = '문자열 함수는 문자열과 관련된 여러가지 기능들을 담고 있다'
print(str.replace('기능', '함수'))
>>문자열 함수는 문자열과 관련된 여러가지 함수들을 담고 있다

print(str)
>>문자열 함수는 문자열과 관련된 여러가지 기능들을 담고 있다

# 이렇게 하면 적용되지는 않아서 여전히 바뀌지 않은 상태로 나옴. 
# 바꾸고싶으면 값을 다시 넣어줘야함 ( str = str.replace('기능','함수')  이런식으로!! )

 

  • upper( )
    : 문자열을 모두 대문자로 변환
    lower( )
    : 문자열을 모두 소문자로 변환
str = 'APPLE apple Apple'
print(str)
print(str.upper())
print(str.lower())
>>
APPLE apple Apple
APPLE APPLE APPLE
apple apple apple

 

  • strip( )
    : 문자열의 양쪽 공백을 제거
    lstrip( )
    : 문자열의 왼쪽 공백을 제거(left)
    rstrip( )
    : 문자열의 오른쪽 공백을 제거(right)
str = '         Hello          Python          '
print(str)
print(str.strip())
print(str.lstrip())
print(str.rstrip())
print(str.replace(' ', ''))
>>
         Hello          Python          
Hello          Python
Hello          Python          
         Hello          Python
HelloPython

 

  • join( )
    : 문자열에 특정 문자열을 삽입
str = 'Hello'
print('🙋‍♀️'.join(str))
# print(str.join('🙋‍♀️'))
>>
H🙋‍♀️e🙋‍♀️l🙋‍♀️l🙋‍♀️o