Python 코딩 테스트 준비 - 문자열 자료형

기운찬곰·2020년 10월 22일
0
post-thumbnail

코딩테스트를 보다보면 문자열 관련해서도 많이 나온다. 예를 들어 입력받은 문자열에서 특정문자 정제하기. 문자개수세기 등...

문자열 생성

파이썬에서 문자열 생성은 큰 따음표, 작은 따음표 둘 다 된다. 나는 보통 큰 따음표를 주로 사용한다.

a = "string"
print(a) # string

문자열 인덱싱과 슬라이싱

저번시간에 배열처럼 문자열 또한 인덱싱과 슬라이싱이 가능하다.

a = "string's test"

print(a[0]) # s
print(a[-1]) # t
print(a[6:]) # 's test

문자열 포매팅

temp = 10이면서 "현재 온도는 {temp}도 입니다."를 출력하려면 어떻게 해야할까?

temp = 10
print("현재 온도는 " + str(temp) + "도 입니다.") # 현재 온도는 10도 입니다.

문자열은 +로 이어붙일 수 있기 때문에 위에 처럼도 가능하다. str과 int는 + 연산을 사용하면 에러가 난다. 그래서 str형으로 형변환을 해줘야 한다.


하지만 더 쉽고 일반적인 방법이 있다. 바로 format 함수를 이용하는 것이다.

temp = 10
print("현재 온도는 {}도 입니다.".format(temp)) # 현재 온도는 10도 입니다.

몇개이든 상관없다.

temp = 10
print("현재 온도는 {}도 입니다. 내일 온도는 {}도 입니다.".format(temp, 12.8))

{ } 안에 숫자를 작성하면 순서를 조작할 수 있다.

print('오늘은 {1}년 {0}월 {2}일입니다.'.format(2023, 10, 4)) 
# 오늘은 10년 2031월 4일입니다. 

format을 이용한 문자열 포맷팅 양식에서 소수점 출력 형식을 지정하려면 :4d, :.2f 처럼 : 뒤에 원하는 출력 형식의 형태를 작성하면 된다. 오...

print("={0:6d}=".format(123456)) # "=123456="
print("={0:6d}=".format(123)) # "=   123="
print("={0:06d}=".format(123)) # "=000123="

print("{0:f}".format(2/3)) # 0.666667
print("{0:.2f}".format(2/3)) # 0.67

format 말고도 f"문자열 출력 포멧" 형태로 표현할 수도 있다.

print(f"현재 온도는 {temp}도 입니다.")

문자열 관련 메소드

저번시간 리스트형 만큼이나 문자열 메소드는 중요하다. 서로 겹치는 것도 있고 문자열만 쓰이는 메소드도 있다.

len()

문자 개수 반환

a = "apple"
print(len(a)) # 5

count()

문자열 중 특정 문자 개수 반환. 간혹 쓰인다.

a = "apple"
print(a.count("p")) # 2

upper(), lower(), capitalize()

순서대로 소문자를 대문자로 바꾸고, 대문자를 소문자로 바꾸고, 앞에 첫문자만 대문자로 만드는 함수이다.

a = "apple"
print(a.upper()) # APPLE

b = "APPLE"
print(b.lower()) # apple

c = "apple"
print(c.capitalize()) # Apple

join()

join은 잘 알아두는 편이 좋다. 문자열사이의 무엇을 넣는다던가, 문자열리스트요소사이에 무엇을 넣어서 연결해서 새로운 문자열을 만드는 함수이다.

print(".".join("apple")) # a.p.p.l.e
print("\n".join(["a", "b", "c", "d", "e"]))
'''
a
b
c
d
e
'''

일반적으로 두번째 예시가 많이 쓰인다. 그냥 통째로 외워버리자.

find()

문자열 중 특정 문자가 처음으로 나온 위치를 반환하는데, 찾는 문자가 없다면 -1을 반환한다.

a = "apple"

print(a.find("p")) # 1
print(a.find("y")) # -1

index()

문자열 중 특정 문자가 처음으로 나온 위치를 반환하는데, 찾는 문자가 없다면 에러를 발생시킨다.

lstrip(), rstrip(), strip()

순서대로 왼쪽공백, 오른쪽 공백, 양쪽 공백을 지우는 함수이다.

a = " apple"
print(a.lstrip()) # apple

a = "apple "
print(a.rstrip()) # apple

a = " apple "
print(a.strip()) # apple

어쩌다 한번 쓰인다. 이런게 있구나 알고 있으면 된다.

replace()

상당히 중요하다. 문자열 안의 특정한 값을 다른 값으로 치환해준다.

a = "apples is delicious"
new_a = a.replace("is", "are")

print(a) # apples is delicious
print(new_a) # apples are delicious

참고로 원본 a는 데이터가 훼손되지 않고 새로운 문자열을 반환해준다.

split()

상당히 많이 쓰인다.

a = "apple is delicious"
print(a.split()) # ['apple', 'is', 'delicious']

괄호 안에 아무것도 넣어 주지 않으면 공백을 기준으로 문자열을 나눠서 리스트형을 반환해준다.

isdigit()

문자열이 숫자로 인식될 수 있는지 확인해서 True or False를 반환해준다. 그 밖에도 isalpha, isdecimal, isalnum 등 다양한 함수가 존재하는데 쓰임새는 비슷하다.

a = "10"
print(a.isdigit()) # True
 
b = "a50"
print(b.isdigit()) # False

References

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글