파이썬 코칭스터디 1기 - 모두를 위한 파이썬(PY4E) 6강 (문자열)

태온·2021년 8월 6일
0
post-thumbnail

6. 문자열

📌 1. 문자열 읽기, 타입 변환

  • 사용자 입력(input)으로 들어오는 값은 문자열 타입으로 입력되므로 다른 원하는 타입으로 바꾸고 싶다면 적절한 타입 변환을 해줘야 한다.
name = input('Enter:')
print(type(name))
print(name)

다음과 같이 숫자를 입력하더라도 str 타입으로 반환된다.

Untitled


📌 2. 문자열의 내부 들여다 보기

  • 우리는 특정 문자열을 구성하고 있는 개별 문자 값에 인덱스를 활용해서 접근할 수 있다.
  • 여기서 유의해야 할 것은 첫번째 오는 문자에 대한 인덱스는 0부터 시작한다는 점이다.

Untitled 1

fruit = 'banana'
letter = fruit[0]
print(letter)
letter = fruit[1]
print(letter)
letter = fruit[2]
print(letter)

# 결과
b  # fruit[0]
a  # fruit[1]
n  # fruit[2]
  • 만약 해당 문자열이 가지고 있는 인덱스를 넘어서는 값을 호출하게 되면 오류가 발생한다.

인덱스가 5번째 자리까지인데 6번째 자리를 찾으려 하지만 없기 때문에 오류 발생

fruit = 'banana'
letter = fruit[6]
print(letter)

Untitled 2


📌 3. len() 함수

  • 문자열에 대해서 우리는 len() 내장 함수를 활용해서 문자열의 길이를 알 수 있다. 예를 들어, len(banana)라고 한다면 banana가 몇개의 문자로 구성되어 있는지를 알 수 있게 된다.
fruit = 'banana'
print(len(fruit))

# 결과
6

📌 4. 문자열의 길이만큼 루프 실행

  • len() 함수를 이용하여 문자열의 길이만큼 루프를 실행이 가능하다.

  • while문

# while 루프

fruit = 'banana'
index = 0

while index < len(fruit) :
    letter = fruit[index]
    print(index, letter)
    index = index + 1

# 결과
0 b
1 a
2 n
3 a
4 n
5 a
  • for문
# for 루프

fruit = 'banana'

for letter in fruit :
    print(letter)

# 결과
b
a
n
a
n
a
  • 또 다른 for문 방법
for letter in 'banana':
    print(letter)

# 결과
b
a
n
a
n
a

Untitled 3


📌 5. 루프와 개수 세기

  • 문자열에 있는 각 문자에 대해 루프를 활용하여 문자 'a'의 개수를 세는 루프 코드
word = 'banana'
count = 0
for letter in word:
	if letter == 'a': # 문자가 a일 경우
		count = count + 1
print(count)

# 결과
3


🤩 문자열을 다루는 다양한 방법들

📌 1. 문자열 슬라이싱

  • [ : ] 를 사용하여 특정 범위에 있는 문자를 가져올 수 있다.

  • [ : ] 두 번째에 들어갈 숫자는 그 전까지만 인덱싱한다.

    ex) [0 : 4] ⇒ 0, 1, 2, 3 번째 문자까지만 인덱싱함

  • 두 번째에 들어갈 숫자가 문자열 마지막이상을 가르키는 경우 문자열의 마지막에서 멈춘다.

Untitled 4

myString = 'Monty Python'

print(myString[0:4])
# Mont 출력 

print(myString[6:7])
# P 출력

print(myString[6:20])
# Python 출력

print(myString[:2])
# index값이 2에 해당하는 문자 전까지 출력 즉, Mo 출력

print(myString[8:])
# index값이 8에 해당하는 문자부터 출력 즉, thon 출력

print(myString[:])
# 전체 출력

Untitled 5


📌 2. 문자열 합치기

  • 문자열을 연결하기 위해서 수리 연산자인 + 를 이용한다.
firstString = 'Hello'

secondString = 'There'
print(firstString + secondString)
# HelloThere 출력

thirdString = firstString + ' ' + secondString
print(thirdString)
# Hello There 출력

Untitled 6


📌 3. in을 활용한 논리 연산자 사용

  • 특정 문자열에 확인하고자 하는 문자가 있는지 확인하기 위해 in을 사용
fruit = 'banana'

print('n' in fruit) # True로 출력

print('m' in fruit) # False로 출력

print('nan' in fruit) # True로 출력

if 'a' in fruit :
    print('Found it!') # Found it으로 출력

📌 4. 문자열 라이브러리

- 대문자, 소문자 변환

  • 대문자 변환 함수 : upper()
  • 소문자 변환 함수 : lower()
  • 이 함수들은 모든 문자열에 이미 내장이 되어 있기 때문에 함수를 문자열 변수 뒤에 . 을 붙임으로써 호출이 가능하다.
greet = 'Hello Bob'
zap = greet.lower()

print(zap)
# hello bob 출력

print(greet)
# Hello Bob 출력

print('Hi There'.lower())
# hi there 출력

print(greet.upper())
# HELLO BOB 출력

- 문자열 탐색

  • find() 함수
fruit = 'banana'
pos = fruit.find('na')
print(pos) # 2 출력

aa = fruit.find('z') # 문자열을 찾지 못하므로 -1 반환
print(aa) # -1 출력

- 문자열 바꾸기

  • replace() 함수
greet = 'Hello Bob'
nstr = greet.replace('Bob', 'Jane') # Bob 대신 Jane으로 바꾸기
print(nstr)
nstr = greet.replace('o','X')
print(nstr)

Untitled 7

- 공백 제거

  • lstrip(): 왼쪽 공백 제거 (left)
  • rstrip(): 오른쪽 공백 제거 (right)
  • strip(): 양쪽 공백 제거
greet = '    Hello Bob    '
print(greet.lstrip()) # 왼쪽의 공백이 삭제됨 => 'Hello Bob    '
print(greet.rstrip()) # 오른쪽의 공백이 삭제됨 => '    Hello Bob'
print(greet.strip()) # 양쪽의 공백이 삭제됨 => 'Hello Bob'

Untitled 8

⚡ 결과는 strip()이랑 똑같이 보이지만
실제로 lstrip은 오른쪽 공백은 살아있음 ⇒ 'Hello Bob '

- 시작 문자열 찾기

line = 'Please have a nice day'
print(line.startswith('Please'))
# True 출력
print(line.startswith('p'))
# False 출력 : 대소문자 구분해줘야함

💡 문자열의 처음은 항상 0부터 시작한다는 것을 기억해두자!


📗 참고

모두를 위한 파이썬 (PY4E)

profile
코딩도시락(배워서 남 주자)

0개의 댓글