본문 바로가기

[부스트코스 코칭스터디]

[부스트코스] 모두를 위한 파이썬(PY4E) 문자열과 문자열 파싱

이 글은 네이버 커넥트 재단에서 운영하는 부스트 코스 코칭 스터디 (모두를 위한 파이썬 2022) 과정에 부스터로 참여 하여 배운 내용을 정리 한 글이다.

추가적인 공부를 원하면 해당 강좌를 통해 공부가 가능하다.

강좌링크 : [https://www.boostcourse.org/cs122]
강좌명 : 모두를 위한 파이썬(PY4E)

문자열

지난 글인 변수와 자료형에서도 말했듯이 문자열은 class str로 나타나는 자료형을 말한다.

문자열을 활용하면 크롤링과 같은 데이터 추출에서도 사용 할 수 있고 여러 방향으로 활용 할 수 있다.
오늘은 문자열을 파악하고 분리 결합 추출 변환과 같은 여러 문자열 변환 방법에 대해 알아 볼 것이다.

문자열 index

index란?
문자열이 지정 되어 있는 위치를 말한다. 첫글자 0부터 문자열의 길이 - 1 까지의 수를 나타 낼 수 있다.

food = "pizza"
print(food[1])

위 코드는 "pizza" 라는 문자열을 food 변수에 넣어 준 food 문자열의 1번 index를 출력한 것이다. [] 안에 인덱스 번호를 넣으면 해당 번호의 문자열을 표현할 수 있다.현재 food는 0, 1, 2, 3, 4까지 총 0을 포함해 5개의 인덱스를 가지고 있다.

만약 범위 밖의 문자열을 표현하려고 하면 어떻게 될까?

아까 봤던 코드에 food[5]를 넣어보겠다.

food = "pizza"  
print(food\[5\])
-------------
IndexError: string index out of range

다음과 같이 IndexError가 일어난다. 5의 인덱스는 존재하지 않아 표현 할 수 없다. 코드를 짜다 보면 인덱스를 고려하지 않아 오류가 자주 일어남으로 주의 해야 한다.

문자열 입력

문자열을 입력하려면 input() 함수를 이용하여 구현 할 수 있다. 원하는 문자를 입력 후 enter를 입력하면 enter를 제외한 모든 키를 입력해 저장한다.

name = input()  
print(name)
------------------------
honggildong <--- 입력  
honggildong <--- 출력

그렇다면 입력으로 받은 문자열의 길이는 어떻게 알 수 있을까? len() 함수를 이용해 알 수 있다.

name = input()  
print(len(name))
-----------------------
honggildong <--- 입력  
11             <--- 출력

이렇게 이름을 입력하면 이름의 길이를 알려주는 코드를 짜보았다.

문자열 라이브러리

파이썬의 장점 중 하나가 내장하고 있는 라이브러리가 많다는 것이다. 라이브러리란 여러 기능이 모여 있는 프로그램 모음이다. 문자열 라이브러리에는 다양한 함수가 있다. 이 중에서 몇가지를 소개 하고자 한다.

문자열 라이브러리에 있는 내장 함수들

find() 문자열 탐색

find() 함수는 찾고자 하는 문자열을 0번 인덱스부터 찾아 첫번째로 나타나는 인덱스를 반환하는 함수이다.
만약 찾고자하는 문자열이 없으면 -1을 반환한다.

food = 'pizza'
print(food.find('zz'))
print(food.find(rice))
-----------------------
2
-1

위 코드를 보면 문자열변수.find(찾고자하는 문자열)의 형태로 사용 할 수 있다.

upper(), lower() 대소문자 변환

모든 문자열을 upper()은 대문자로 lower()은 소문자로 변환해 주는 함수이다.

words = "Hello World"
print(words.upper())
print(words.lower())
--------------------------
HELLO WORLD
hello world

문자열변수.upper(), 문자열변수.lower() 의 형태로 사용한다.

replace() 문자열 바꾸기

replace() 함수는 원하는 문자열을 바꾸는 함수이다. 문자열을 따로 삭제하는 법은 인덱스를 찾아서 없애는 방법 밖에 없는데 이를 활용하면
원하는 문자열을 손쉽게 없앨 수 있다.

words = "Hello World"
change_words = words.replace('World', 'Python')
print(change_words)
--------------------------------------------------
Hello Python

문자열.replace('바꾸고자 하는 문자열', '바꿀 문자열')의 형태로 바꿀 수 있다.

이를 활용해 알파벳(엘)을 전부 없애 보겠다

words = "Hello World"
change_words = words.replace('l', '')
print(change_words)
--------------------------------------------------
Heo Word

이 처럼 알파벳 l 을 바꿀 문자열을 ''로 지정하여 문자열을 없앨 수 있다.

split() 문자열 분리

문자열을 다룰 때 많이 쓰는 함수로 특정 문자를 기준으로 분리할 수 있는 함수이다. 주로 띄어쓰기로 이루어진 문자를 분리할 때 사용한다.

phone_number = '010 1234 5678'
phone_number = phone_number.split(' ')
print(phone_number)
-----------------------------------------
['010', '1234', '5678']

' '을 제외한 숫자만 출력하였다. 여기서 주의해야할 점은 split() 함수를 사용하면 리스트의 형태를 자료를 담아 반환한다는 점이다.

strip() 공백제거

문자열 끝에 남아있는 공백을 제거 하는 함수이다. 주로 space로 이루어진 공간이나 /n개행문자를 제거 할 때 사용한다.
왼쪽 끝만 제거하려면 lstrip() 오른쪽 끝만 제거하려면 rstrip() 둘다 제거하려면 strip() 함수를 사용하면 된다.

 

 

 

오늘은 파이썬의 문자열과 여러 문자열 내장 함수에 대해 알아보았다.
문자열을 잘 다루면 파일 정리나 자료 추출에서도 매우 편할 것이다.

다음에는 컬렉션 중 하나인 리스트에 대해서 알아 보겠다.