Python for Coding Test (1) 문자열 다루기

Jihoon Oh·2020년 12월 27일
0

Python for Coding Test

목록 보기
2/4
post-thumbnail

Python은 문자열을 다루기에 가장 좋은 프로그래밍 언어 중 하나다.
기본적으로 내장 라이브러리에서 문자열을 다루는데 사용하는 여러 메서드 들을 제공한다.

문자열 연산

Python에서는 문자열을 더하고 곱할 수 있다.

  • 두 개의 문자열을 + 연산자로 더하면 하나의 문자열로 합쳐진다.
str1 = "Hello"
str2 = " World!"
print(str1 + str2)
## Hello World!
  • 문자열에 하는 * 연산은 문자열을 해당 횟수 만큼 반복하라는 의미다.
a = "Test!"
print(a * 3)
## Test!Test!Test!

문자열 길이 구하기

  • len(str) 함수는 str의 길이를 반환한다.
a = "Hello World!"
print(len(a))
## 12

문자열 인덱싱과 슬라이싱

  • 다른 언어들과 마찬가지로 파이썬의 문자열은 하나의 배열로 생각할 수 있다.
    예를 들어, "Hello World!"라는 문자열은 맨 앞의 H서부터 0번째 인덱스에 대응된다.
    참고로, -n 처럼 인덱스 앞에 -가 붙으면 뒤에서부터 n번째의 인덱스를 의미한다.
a = "Hello World!"
a[0]: 'H'
a[1]: 'e'
a[2]: 'l'
...
a[11]: '!'
a[-1]: '!'
a[-0]: 'H' # 0과 -0은 같다.
  • 이를 이용해서 문자열의 일부분을 슬라이싱 할 수 있다.
    a[시작:끝]는 a 문자열의 시작 인덱스부터 끝 인덱스까지의 문자열을 슬라이싱 한다.
    이때 끝 인덱스는 문자열에 포함되지 않는다.
a = "Hello World!"
print(a[0:5])
## Hello

print(a[0:4])
## Hell
  • 이 때 시작 인덱스 또는 끝 인덱스를 생략할 수 있다.
    시작 인덱스를 생략한 경우 문자열의 맨 처음부터 자르며, 끝 인덱스를 생략한 경우 문자열의 맨 마지막까지 자른다.
a= "Hello World!"
print(a[:5])
## Hello

print(a[5:])
## ' World!' # 이렇게 문자열을 두 부분으로 나눌 수 있다.

문자열 formatting

포맷 코드를 통해 문자열 안에 변수를 집어넣을 수 있다.

print("Hello %s" % "World!")
## Hello World!

a = "World!"
print("Hello %s" % a) # 변수를 넣는 것도 가능
## Hello World!

print("%s %s" % ("Hello", "World!")) # ()안에 ,로 구분해서 여러개를 넣을 수 있다.
## Hello World!

포맷 코드는 다음과 같다.

%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 자체)

또는 format 함수를 사용할 수도 있다.

print("Hello {0}".format("World!"))
## 'Hello World!'

a = "World!"
print("Hello {0}".format(a)) # 변수를 넣는 것도 가능
## Hello World!

print("{0} {1}".format("Hello", "World!")) # {0}, {1}, .... 의 방법으로 여러개 입력 가능
## Hello World!

Python 3.6 부터는 f-string 이라는 새로운 방식이 도입

  • 기존의 % 연산자를 사용하는 방식이나 str.format 보다 가독성이 좋고, 속도도 가장 빠르다.
a = "Hello"
b = "World!"
print(f'{a} {b}') # {}안에 변수를 넣을 수 있다
## Hello World!

age = 20
print(f'My age is {age+1}') # {}안에서 정수형 변수의 연산도 가능
## My age is 21
* formatting 과정에서 좌우 정렬 등의 기능이 있지만, 코딩 테스트를 위한 문법 정리이기 때문에 생략한다.

문자열 관련 함수

  • count: 인자로 받은 문자의 개수를 센다.
a = "Hello World!"
print(a.count('l'))
## 3
  • find: 인자로 받은 문자가 맨 처음 나오는 인덱스를 반환한다. 나오지 않으면 -1을 반환한다.
a = "Hello World!"
print(a.find('l'))
## 2
  • index: find와 같으나 해당 문자가 포함되지 않으면 오류를 출력한다.
a = "Hello World!"
print(a.index('l'))
## 2

print(a.index('x'))
# 오류 출력
""" Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found """
  • join: 인자로 받은 문자열의 각각 문자 사이에 문자를 삽입한다.
a = "Hello"
print(",".join(a))
## H,e,l,l,o
  • upper: 소문자를 대문자로 바꾸기
    lower: 대문자를 소문자로 바꾸기
a = "hello"
b = "WORLD!"
print(a,b)
## hello WORLD!
print(a.upper(), b.lower())
## HELLO world!
  • strip: 문자열의 공백을 제거한다. lstrip은 왼쪽 공백을, rstrip은 오른쪽 공백을, strip은 양쪽 공백을 제거한다.
a = "  Hello World!  "
print(a.lstrip())
## Hello World!   # 오른쪽에 두 칸 공백 남아있음
print(a.rstrip())
##   Hello World! # 왼쪽에 두 칸 공백 남아있음
print(a.strip())
## Hello World! # 공백 없음
  • split: 입력받은 인자를 기준으로 문자열을 나눈다. 아무 인자도 받지 않으면 공백, 줄바꿈 문자, 탭 문자를 기준으로 나눈다.
a = "Hello World!"
print(a.split('W'))
## ['Hello ','orld!'
print(a.split())
## ['Hello','World!']

참고자료
WikiDocs 점프 투 파이썬 - 02-2 문자열 자료형

profile
Backend Developeer

0개의 댓글