코딩테스트를 보다보면 문자열 관련해서도 많이 나온다. 예를 들어 입력받은 문자열에서 특정문자 정제하기. 문자개수세기 등...
파이썬에서 문자열 생성은 큰 따음표, 작은 따음표 둘 다 된다. 나는 보통 큰 따음표를 주로 사용한다.
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}도 입니다.")
저번시간 리스트형 만큼이나 문자열 메소드는 중요하다. 서로 겹치는 것도 있고 문자열만 쓰이는 메소드도 있다.
문자 개수 반환
a = "apple"
print(len(a)) # 5
문자열 중 특정 문자 개수 반환. 간혹 쓰인다.
a = "apple"
print(a.count("p")) # 2
순서대로 소문자를 대문자로 바꾸고, 대문자를 소문자로 바꾸고, 앞에 첫문자만 대문자로 만드는 함수이다.
a = "apple"
print(a.upper()) # APPLE
b = "APPLE"
print(b.lower()) # apple
c = "apple"
print(c.capitalize()) # Apple
join은 잘 알아두는 편이 좋다. 문자열사이의 무엇을 넣는다던가, 문자열리스트요소사이에 무엇을 넣어서 연결해서 새로운 문자열을 만드는 함수이다.
print(".".join("apple")) # a.p.p.l.e
print("\n".join(["a", "b", "c", "d", "e"]))
'''
a
b
c
d
e
'''
일반적으로 두번째 예시가 많이 쓰인다. 그냥 통째로 외워버리자.
문자열 중 특정 문자가 처음으로 나온 위치를 반환하는데, 찾는 문자가 없다면 -1을 반환한다.
a = "apple"
print(a.find("p")) # 1
print(a.find("y")) # -1
문자열 중 특정 문자가 처음으로 나온 위치를 반환하는데, 찾는 문자가 없다면 에러를 발생시킨다.
순서대로 왼쪽공백, 오른쪽 공백, 양쪽 공백을 지우는 함수이다.
a = " apple"
print(a.lstrip()) # apple
a = "apple "
print(a.rstrip()) # apple
a = " apple "
print(a.strip()) # apple
어쩌다 한번 쓰인다. 이런게 있구나 알고 있으면 된다.
상당히 중요하다. 문자열 안의 특정한 값을 다른 값으로 치환해준다.
a = "apples is delicious"
new_a = a.replace("is", "are")
print(a) # apples is delicious
print(new_a) # apples are delicious
참고로 원본 a는 데이터가 훼손되지 않고 새로운 문자열을 반환해준다.
상당히 많이 쓰인다.
a = "apple is delicious"
print(a.split()) # ['apple', 'is', 'delicious']
괄호 안에 아무것도 넣어 주지 않으면 공백을 기준으로 문자열을 나눠서 리스트형을 반환해준다.
문자열이 숫자로 인식될 수 있는지 확인해서 True or False를 반환해준다. 그 밖에도 isalpha, isdecimal, isalnum 등 다양한 함수가 존재하는데 쓰임새는 비슷하다.
a = "10"
print(a.isdigit()) # True
b = "a50"
print(b.isdigit()) # False