파이썬의 자료형(2) - 문자열 자료형
보통 따옴표로 둘어싸인 문장들을 문자열이라고 한다.
따옴표를 이용해 문자열을 만드는 방법은 4개이다.
"Hello World"
'Python is fun'
"""Life is so short, You need python"""
'''Life is so short, You need python'''
4개인 이유를 설명하자면
문자열에 따옴표 포함하기
만약 문장에 따옴표를 포함하고 싶다면
큰 따옴표(")를 포함할 때는 작은 따옴표(')로 둘러싸면 되고,
>>> food = "Python's favorite food is perl"
>>> food
"Python's favorite food is perl"
작은 따옴표(')를 포함할 때는 큰 따옴표로 둘러싸면 된다.
>>> say = '"Python is very easy." he says.'
>>> say
"Python is very easy." he says.
혹은 역슬래시를 사용할 수 있다.
>>> food = 'Python\'s favorite food is perl'
>>> say = "\"Python is very easy.\" he says."
여러 줄인 문자열을 변수에 대입하고 싶을 때
줄바꿈 이스케이프 코드 \n을 삽입하거나 연속된 3개 따옴표를 사용한다.
>>> multiline = "Life is too short\nYou need python"
>>> multiline = '''
... Life is too short
... You need python
... '''
>>> multiline = """
... Life is too short
... You need python
... """
문자열 연산
더하기와 곱하기를 활용해 문자열을 연산하여 출력할 수 있다.
>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'
>>> a = "python"
>>> a * 2
pythonpython
문자열 길이
len 함수를 사용하면 문자열의 길이를 구할 수 있다.
>>> a = "Life is too short"
>>> len(a)
17
인덱싱/슬라이싱
문자열은 문자 하나하나(공백포함)에 0으로 시작하는 번호가 주어져 있다. 이를 인덱스라고 한다.
인덱싱은 이런 인덱스를 통해 문자를 가져온다 할 수 있고, 슬라이싱은 문자열을 잘라 문자열을 가지고 올 수 있다.
예를 들어 인덱싱은
>>> a = "Life is too short"
>>> a[0]
'L'
>>> a[5]
'i'
>>> a[-1]
't'
이렇게 사용한다.
인덱스 번호를 음수로 사용할 때는 뒤에서부터 읽는다는 뜻이고 이 때는 1번부터 시작이다.
슬라이싱의 예는
>>> a = "Life is too short, You need python"
>>> a[0:3]
"Lif"
이렇게 콜론(:)을 사이에 두고 숫자를 입력한다. 왼쪽 숫자를 비우면 0부터, 오른쪽을 비우면 끝까지이다.
음수도 사용이 가능하며 예시의 인덱스 번호는 0부터 2까지이다.
왼쪽 숫자 ~ 오른쪽 숫자-1
포매팅
>>> "Life is too short, %s need python" % "You"
'Life is too short, You need python'
>>> "Life is too short, %d need python" % 3
'Life is too short, 3 need python'
>>> a = 2
>>> "Life is too short, %d need python" % a
'Life is too short, 2 need python'
%s는 형태에 따라 %d, %f, %c 등으로 바꿔 사용가능하다. %를 쓰고 싶으면 %%를 사용한다.
두 개 이상의 값을 넣을 때는 괄호를 씌우고 콤마(,)로 구분하여 입력한다. ex) "Life %s too %s" % ("is", "short")
코드 | 설명 |
%s | 문자열 |
%c | 문자 |
%d | 정수 |
%f | 부동소수 |
%o | 8진수 |
%x | 16진수 |
%% | % 자체 |
포맷코드와 숫자 활용
정렬과 공백
>>> "%10s" % "hi"
' hi'
반대쪽은 %-10s를 입력한다. 10글자의 문자열 이후 "jane"이라는 문자열 추가
>>> "%-10sjane." % 'hi'
'hi jane.'
소수점 표현
>>> "%0.4f" % 3.42134234
'3.4213'
소수점을 4자리까지만 표현하고 싶을 때 사용한다.
>>> "%10.4f" % 3.42134234
' 3.4213'
위 예는 소수점 4자리까지 표현하고 전체를 10자리로 만들어 정렬한다.
format 함수를 이용한 포매팅
조금 전 포매팅 예시에서 포맷 코드 부분을 중괄호로 묶어 숫자로 표시하고 뒤에 함수를 사용한다.
>>> "Life is too short, {0} need python".format("You")
'Life is too short, You need python'
>>> "Life is too short, {0} need python".format(3)
'Life is too short, 3 need python'
>>> a = 2
>>> "Life is too short, {0} need python".format(a)
'Life is too short, 2 need python'
2개 이상의 값을 넣으려
>>> number = 10
>>> day = "three"
>>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
'I ate 10 apples. so I was sick for three days.'
와 같이 사용된다.
변수, 숫자로 표현할 수도 있지만 중괄호 안에 이름을 넣어 표현할 수 있다.
>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
번호와 이름을 섞어서 사용할 수도 있다.
함수로 정렬
>>> "{0:<10}".format("hi")
'hi '
>>> "{0:>10}".format("hi")
' hi'
>>> "{0:^10}".format("hi")
' hi '
공백 채우기
>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'
정렬에 사용한 ^, <, > 앞에 문자를 사용해 공백에 사용될 문자를 사용할 수 있다.
소수점 표현
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
{ 또는 } 문자 표현
>>> "{{ and }}".format()
'{ and }'
두번 쓰면 된다.
f 문자열 포매팅
파이썬 3.6이상부터 사용 가능한 포매팅 문자열이다.
쉽게 말하면 앞서 했던 작업에 불필요한 문자들을 제외하고 앞에 f만 붙여주면 된다.
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
문자열에서 계산식도 가능하다.
>>> age = 30
>>> f'나는 내년이면 {age + 1}살이 된다.'
'나는 내년이면 31살이 된다.'
정렬은 다음과 같다.
>>> f'{"hi":<10}' # 왼쪽 정렬
'hi '
>>> f'{"hi":>10}' # 오른쪽 정렬
' hi'
>>> f'{"hi":^10}' # 가운데 정렬
' hi '
공백 채우기는 다음과 같다.
>>> f'{"hi":=^10}' # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='
>>> f'{"hi":!<10}' # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'
소수점은 다음과 같이 표현한다.
>>> y = 3.42134234
>>> f'{y:0.4f}' # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}' # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
' 3.4213'
f 문자열에서 중괄호를 사용하려 똑같이 두 번 쓰면 된다.
>>> f'{{ and }}'
'{ and }'
문자열 함수
문자 개수는 count
>>> a = "hobby"
>>> a.count('b')
2
find 함수로 문자의 위치를 찾는다.
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
find 함수를 사용하면 인덱스 번호를 반환하고 없으면 -1을 출력한다.
index로도 찾을 수 있지만 없으면 에러가 발생한다.
>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
문자열 삽입은 join
>>> ",".join('abcd')
'a,b,c,d'
소문자 -> 대문자 upper
>>> a = "hi"
>>> a.upper()
'HI'
대문자 -> 소문자 lower
>>> a = "HI"
>>> a.lower()
'hi'
왼쪽, 오른쪽, 양쪽 공백 지우기 각각 lstrip, rstrip, strip
>>> a = " hi "
>>> a.lstrip()
'hi '
>>> a= " hi "
>>> a.rstrip()
' hi'
>>> a = " hi "
>>> a.strip()
'hi'
문자열 나누기는 replace
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
문자열 나누기는 split
>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
split() 안에 아무것도 입력하지 않으면 space, tab, enter 기준으로 나눈다.