About Python – “문자열 자료형 – String”
About Python – “문자열 자료형 – String”
파이썬의 문자열 자료형 (String)
컴퓨터 프로그래밍에서 문자열은 기호의 순차 수열을 의미합니다. 프로그래밍에서 문자열은 일반적으로 요소가 문자 인코딩과 관련된 문자를 대표하는 일련의 자료값을 저장하고 있는 자료형으로 이해할 수 있습니다.
파이썬에서 문자열을 나타내기 위해서는 다음의 문장을 기억하면 됩니다.
큰 따옴표나 작은 따옴표로 둘러싸거나,
큰 따옴표 세 개나 작은 따옴표 세 개로 둘러싸면 됩니다.
string1 = "this is String1."
string2 = 'this is String2.'
string3 = """this is String3."""
string4 = '''this is Stirng4.'''
print(type(string1))
print(type(string2))
print(type(string3))
print(type(string4))
#<class 'str'>
#<class 'str'>
#<class 'str'>
#<class 'str'>
각각의 경우 모두 이것이 문자열인 것을 확인할 수 있습니다.
파이썬의 이스케이프 시퀀스 (Escape Sequence)
이스케이프 시퀀스는 컴퓨터와 주변 기기의 상태를 바꾸는 일련의 문자열을 의미합니다. 예를 들면, C에서 줄바꿈을 의미하는 이스케이프 시퀀스는 \n
입니다. 파이썬에서도 이스케이프 시퀀스를 제공하는데, 그 종류에 대하여 알아보겠습니다.
이스케이프 시퀀스 | 코드의 역할 |
---|---|
\n | 문자열 안에서 줄을 바꾸는 역할을 합니다. |
\t | 문자열 사이에 tab 간격을 주는 역할을 합니다. |
\\ | 문자 \를 표현하는 역할을 합니다. |
\” | 큰 따옴표를 표현하는 역할을 합니다. |
\’ | 작은 따옴표를 표현하는 역할을 합니다. |
아래는 이스케이프 시퀀스를 사용하는 예제입니다. 줄바꿈을 표현하는 또 다른 방법도 설명해 놓았습니다.
print("안녕하세요.\n이것은 이스케이프 시퀀스를 사용하는 예시입니다. \n좋은 하루 보내세요!")
print("""
파이썬에서 이런 식으로, 이스케이프 시퀀스를 사용하지 않고 줄바꿈을 표현할 수 있습니다.
가독성이 좋고 편하지 않나요?
작은 따옴표 세 개를 사용하거나, 큰 따옴표 세 개를 사용하면 됩니다.
""")
#안녕하세요.
#이것은 이스케이프 시퀀스를 사용하는 예시입니다.
#좋은 하루 보내세요!
#파이썬에서 이런 식으로, 이스케이프 시퀀스를 사용하지 않고 줄바꿈을 표현할 수 있습니다.
#가독성이 좋고 편하지 않나요?
#작은 따옴표 세 개를 사용하거나, 큰 따옴표 세 개를 사용하면 됩니다.
파이썬에서 문자열 인덱싱하기 (indexing)
파이썬에서는 문자열 인덱싱을 지원합니다. 인덱싱이란 문자열 안에서 원하는 값을 뽑아내는 것을 의미합니다. 다음의 코드를 살펴봅시다.
x = "This is Goddessana_'s Devlog."
print(x[2]) #i 문자열 x의 세 번째 문자
print(x[-2]) #g 문자열 x의 뒤에서 두 번째 문자
문자열이름[숫자]
로 문자열을 인덱싱할 수 있습니다.
파이썬에서 문자열 슬라이싱하기 (Slicing)
슬라이싱은 문자열에서 원하는 연속된 값을 뽑아내는 것을 의미합니다. 예컨대 아래의 코드를 살펴보면..
x = "This is Goddessana_'s Devlog."
print(x[3:10])
문자열이름[숫자:숫자]
로 문자열을 슬라이싱할 수 있습니다. 시작 번호나 끝 번호를 생략하면 처음부터 슬라이싱되거나 끝까지 슬라이싱됩니다. 인덱싱과 마찬가지로 슬라이싱의 숫자에도 음수가 들어갈 수 있습니다.
파이썬에서 문자열 포매팅하기 (formatting)
다음은 C언어의 코드인데, 잠시 살펴봅시다.
#include <stdio.h>
int main()
{
printf("제 몸무게는 %d 킬로그램 입니다.", 65);
}
“제 몸무게는 ~ 킬로그램 입니다.” 라는 문자열 안에 65라는 숫자를 넣고 싶어서 %d
를 사용하고, 끝에 65라는 값을 넣어주었습니다.
파이썬에서도 이와 비슷하게 문자열 포매팅이라는 것을 지원하는데, 문자열 포매팅이란 문자열 안에 특정한 값을 넣는 것을 의미합니다. 아래의 코드를 살펴보겠습니다.
print("This is %s's Devlog." % "Goddessana_")
#This is Goddessana_'s Devlog.
포매팅을 원하는 부분에 %s
와 같은 문자열 포맷 코드를 넣고, 문자열이 끝난 다음 삽입할 문자열을 작성해주었습니다. 여기서는 문자열을 넣기 위해서 %s
라는 문자열 포맷 코드를 사용했는데, 정수나 부동 소수 등 여러 가지를 넣을 수 있는 문자열 포맷 코드가 있습니다. 다음은 그것을 나타낸 표입니다.
문자열 포맷 코드 | 코드의 역할 |
---|---|
%s | 문자열을 포매팅할 수 있습니다. |
%c | Character – 문자 한 개를 포매팅할 수 있습니다. |
%d | 정수 값을 포매팅할 수 있습니다. |
%f | 부동 소수점 값을 포매팅할 수 있습니다. |
%o | 8진수 값을 포매팅할 수 있습니다. |
%x | 16진수 값을 포매팅할 수 있습니다. |
%% | 포매팅 시, “%”라는 문자 자체를 나타냅니다. |
%s
코드와 숫자를 이용해서 공간을 할당하고 정렬을 사용할 수 있습니다.
print("This is %50s's Devlog." % "Goddessana_")
#This is Goddessana_'s Devlog.
print("This is %-50s's Devlog." % "Goddessana_")
#This is Goddessana_ 's Devlog.
print("%100d 테스트!" % 20)
# 20 테스트!
print("%100c 테스트!" % 'a')
# a 테스트!
print("%100.2f 테스트!" % 923.23123124328)
# 923.23 테스트!
#100의 의미 : 100칸의 공간 할당, .2f의 의미 : 소숫점 두 번째 자리까지 출력
50칸, 100칸의 공간을 할당하고 바인딩되는 것을 왼쪽, 오른쪽에 정렬한 것입니다. 여러 형식의 자료형들도 적용되는 것을 볼 수 있습니다.
파이썬의 format()
함수
format()함수는 파이썬에 내장되어 있는 함수입니다. https://docs.python.org/ko/3/library/functions.html#format 에서 설명을 볼 수 있습니다.
print("저의 벤치프레스 1RM은 {0}kg이고, 데드리프트의 1RM은 {1}kg입니다.".format(100, 120))
# 저의 벤치프레스 1RM은 100kg이고, 데드리프트의 1RM은 120kg입니다.
squat = 210
print("저의 스쿼트 중량은 {}kg 입니다.".format(squat))
#저의 스쿼트 중량은 210kg 입니다.
format()
함수를 사용하는 간단한 예제코드입니다.
파이썬의 len()
함수
str = "The example"
print(len(str))
#11
len()함수는 문자열이 총 몇 글자인지를 반환합니다.
파이썬의 count()
함수
count()
함수는 괄호 안에 들어간 것이 해당 문자열 안에 몇 글자가 포함되어있는지를 반환합니다. 이 함수를 사용하여 아래의 노래 가사에 ‘i’ 라는 문자가 몇 개가 포함되어 있는지 알 수 있습니다.
TheFeels = """Boy, I, boy, I, boy, I know
I know you got the feels
Boy, I, boy, I, boy, I know
Uh, I'm so curious
'Bout you, boy, wanna keep it cool
But I know every time you move, got me frozen
I get so shy, it's obvious (get ya)
Catching feels like butterflies
If I say what's on my mind
"""
print(TheFeels.count('i'))
#9
파이썬의 find()
함수, index()
함수
각각의 함수들은 괄호 안에 있는 문자가 맨 처음에 언제부터 나왔는지를 반환합니다.
TheFeels = """Boy, I, boy, I, boy, I know
I know you got the feels
Boy, I, boy, I, boy, I know
Uh, I'm so curious
'Bout you, boy, wanna keep it cool
But I know every time you move, got me frozen
I get so shy, it's obvious (get ya)
Catching feels like butterflies
If I say what's on my mind
"""
print(TheFeels.find('boy'))
print(TheFeels.index('g'))
print(TheFeels.find('-'))
print(TheFeels.index('-'))
'''
8
39
-1
Traceback (most recent call last):
File "/Users/goddessana/Documents/1.py", line 14, in <module>
print(TheFeels.index('-'))
ValueError: substring not found
'''
동일해 보이지만 차이점은 index()
함수는 없는 문자를 찾으면 오류를 발생시킵니다.