-
Notifications
You must be signed in to change notification settings - Fork 0
2.05. 내용정리: 5일차
- 문자열 (str) 타입 역시 여러 문자 타입이 나열된 타입이므로, 문자열도 컨테이너(Container) 타입이다.
- 선언 시 작은 따옴표
'
혹은 큰 따옴표"
로 선언한다. - 다른 컨테이너 타입들과 마찬가지로 해당 타입명의
str
함수를 통해 선언할 수도 있다.
a = 'Hello'
b = "Python!"
print(a, ',', b)
s = str('Hello, Python!')
print(s)
- 다른 타입을 문자열로 바꾸는 것이 가능하다.
n = 10
s = str(n)
print('s:', s)
print(type(s))
- 이미 선언된 문자열을
del
키워드로 문자를 제거할 수 없다. - 만약
del
키워드로 문자 하나를 제거하려고 할 경우,TypeError
에러가 발생한다.
a = 'Hello'
# del 키워드로 문자 하나를 삭제하려고 하면 아래의 에러가 출력된다.
# TypeError: 'str' object doesn't support item deletion
del a[0]
print(a)
- 문자열도 덧셈 연산과 곱셈 연산이 가능하다.
- 문자열을 곱셈하는 경우, 일반적인 곱셈 연산 방식이 아니라 n번만큼 문자열이 추가로 연결된다.
a = 'Hello'
b = 'Python!'
# 덧셈
c = a + ', ' + b
print(c)
# 곱셈
n = 3
d = a * n
print(d)
- 문자열도 인덱싱과 슬라이싱이 가능하다.
d = c[0]
e = c[0:5]
print('d:', d)
print('e:', e)
- 문자열 역시 컨테이너 타입이므로, 값(문자)가 있으면
True
, 비어있으면False
이다.
t = bool('True')
f = bool('False')
void = bool('')
space = bool(' ')
print('"True" is', t)
print('"False" is', f)
print('"" is', void)
print('" " is', space)
- 독스트링도 문자열 (str) 타입이다.
- 주석과 비슷한 쓰임새로 사용된다.
- 주로 한 문장이 아닌 여러 문장의 긴 문자열들을 선언할 때 사용된다.
- 주로 파이썬 패키지나 함수, 클래스의 설명(긴 문장)을 위해 사용한다.
- 패키지는 대충 무엇인지 알겠는데, 아직 클래스가 뭔지 잘 모르겠다. 공부 필요.
- 선언 시 작은 따옴표
'
혹은 큰 따옴표"
를 세 번 사용하여 선언한다. - ex.
a = '''작은 따옴표'''
b = """큰 따옴표"""
print(a)
print(b)
print(type(a))
print(type(b))
s = '''안녕하세요, 흔한 찐따입니다.
만나서 정말 반갑습니다.'''
print(s)
이스케이프 코드란, 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 문자 조합이며, 주로 문자열 안에 특수 문자를 사용하거나 출력 결과를 보기 좋게 정렬하는 용도로 사용한다.
몇 가지 이스케이프 코드를 정리하면 다음과 같다.
코드 | 설명 |
---|---|
\n | 문자열 안에서 줄을 바꿀 때 사용 |
\t | 문자열 사이에 탭 간격을 줄 때 사용 |
\\ | 문자 \를 그대로 표현할 때 사용 (마크다운 문법과 동일) |
\' | 작은따옴표(')를 그대로 표현할 때 사용 |
\" | 큰따옴표(")를 그대로 표현할 때 사용 |
\r | 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동) |
\f | 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동) |
\a | 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 난다) |
\b | 백 스페이스 |
\000 | 널(null) 문자 |
이중에서 활용빈도가 높은 것은 \n
, \t
, \\
, \'
, \"
이다.
나머지는 프로그램에서 잘 사용하지 않는다.
문자열에서 또 하나 알아야 할 것으로는 문자열 포매팅(Formatting) 이 있다. 예를 들어 다음과 같은 문자열을 출력하는 프로그램을 작성했다고 가정해 보자.
"현재 온도는 18도입니다."
시간이 지나서 20도가 되면 다음 문장을 출력한다.
"현재 온도는 20도입니다"
위 두 문자열은 모두 같은데 20
이라는 숫자와 18
이라는 숫자만 다르다.
이렇게 문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것이 바로 문자열 포매팅 기법이다.
쉽게 말해 문자열 포매팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.
s = 'I eat %d apples.' % 3
print(s)
문자열 안에서 숫자를 넣고 싶은 자리에 %d
문자를 넣어 주고, 삽입할 숫자 '3'은 가장 뒤에 있는 %
문자 다음에 써 넣었다.
여기에서 %d
는 문자열 포맷 코드라고 부른다.
s = 'I eat %s apples.' % 'five'
print(s)
위 예제에서는 문자열 안에 또 다른 문자열을 삽입하기 위해 앞에서 사용한 문자열 포맷 코드 %d
가 아닌 %s
를 썼다.
즉, 숫자를 넣기 위해서는 %d
를 써야 하고, 문자열을 넣기 위해서는 %s
를 써야 한다.
※ 문자열을 대입할 때는 앞에서 배운 것처럼 큰따옴표나 작은따옴표를 반드시 써주어야 한다.
n = 3
s = 'I eat %d apples.' % n
print()
1번 예시처럼 숫자를 바로 대입하나 위 예제처럼 숫자 값을 나타내는 변수를 대입하지만 결과는 같다.
n = 10
s = 'three'
s2 = 'I ate %d apples. so I was sick for %s days.' % (n, s)
print(s2)
위 예문처럼 2개 이상의 값을 넣으려면 마지막 %
다음 괄호 안에 콤마 (,)
로 구분하여 각각의 값을 넣어 주면 된다.
문자열 포맷 코드로는 다음과 같은 것이 있다.
코드 | 설명 |
---|---|
%s | 문자열 (String) |
%c | 문자 1개 (Character) |
%d | 정수(Integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 % 자체) |
문자열의 format
함수를 사용하면 좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있다.
-
format
함수 사용
n = 10
s = 'I ate {0} apples.'.foramt(n)
print(s)
- 여러 값들을 대입하기
n1 = 11
n2 = 10
s = '{0} is bigger than {1}.'.format(n1, n2)
print(s)
파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있다. 파이썬 3.6 미만 버전에서는 사용할 수 없는 기능이므로 주의해야 한다.
사용하는 방법은 문자열 앞에 f
접두사를 붙이면 f 문자열 포매팅 기능을 사용할 수 있다.
- f 문자열 포맷팅 예시
n = 10
s = f'I ate {n} apples.'
print(s)
※ 딕셔너리는 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다.
- 딕셔너리를 활용한 f 문자열 포맷팅 예시
d = {'name':'흔한 찐따', 'age':28}
s = f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]} 입니다.'
print(s)
- 딕셔너리를 활용하여 f 문자열 포맷팅 정렬하기
# 왼쪽 정렬
s = f'{"hi":<10}'
print(s)
# 가운데 정렬
s2 = f'{"hi":^10}'
print(s2)
- 딕셔너리를 활용하여 f 문자열 포맷팅 공백 채우기
# 가운데 정렬하고 '=' 문자로 공백 채우기
s = f'{"hi":=^10}'
print(s)
# 왼쪽 정렬하고 '!' 문자로 공백 채우기
s2 = f'{"hi":!<10}'
print(s2)
- f 포맷팅 문자열로 소수점 표현하기
y = 3.42134234
# 소수점 4자리까지만 표현
s = f'{y:0.4f}'
print(s)
# 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
s2 = f'{y:10.4f}'
print(s2)
f 문자열에서 { }
문자를 표시하려면 다음과 같이 두 개를 동시에 사용해야 한다.
s = f'{{ and }}'
print(s)