🔶 문자열 만들기
1️⃣ 큰 따옴표로 양쪽 둘러싸기
"Hello World"
2️⃣ 작은 따옴표로 양쪽 둘러싸기
'Python is fun'
3️⃣ 큰 따옴표 3개 연속으로 사용해서 양쪽 둘러싸기
"""Life is too short, You need python"""
4️⃣ 작은 따옴표 3개 연속으로 사용해서 양쪽 둘러싸기
'''Life is too short, You need python'''
🔶 문자열 내에 작은 따옴표 또는 큰 따옴표 포함하고 싶을 때
1️⃣ 문자열에 작은 따옴표 포함하기
Python's favorite food is perl
- 위 문자열을 food 변수에 저장하려고 하면 큰 따옴표(
””)로 둘러싸야 함
>>> food = 'Python's favorite food is perl'
File "<stdin>", line 1
food = 'Python's favorite food is perl'
^
SyntaxError: invalid syntax
- 위 문자열을 작은 따옴표로 둘러싸면 구문 오류 (SyntaxError) 발생
2️⃣ 문자열에 큰 따옴표 포함하기
"Python is very easy." he says.
>>> say = '"Python is very easy." he says.'
- 위 문자열을 변수에 저장하고 싶다면 작은 따옴표(
’’)로 둘러싸야 함
3️⃣ 역슬래시 사용해서 작은 따옴표, 큰 따옴표를 문자열에 포함하기
>>> food = 'Python\'s favorite food is perl'
>>> say = "\"Python is very easy.\" he says."
🔶 여러 줄인 문자열을 변수에 대입하고 싶을 때
1️⃣ 줄 바꾸기 위한 이스케이프 코드 (\n) 삽입
>>> multiline = "Life is too short\nYou need python"
cf) 이스케이프 코드 (escape code)
- 프로그래밍 시 사용할 수 있도록 미리 정의한 문자 조합
| 코드 | 설명 |
|---|
| \n | 문자열 내에서 줄바꿈 |
| \t | 문자열 사이에 탭 간격 삽입 |
| \ | \ 그대로 표현 |
| \’ | 작은 따옴표(’) 그대로 사용 |
| \” | 큰 따옴표(”) 그대로 사용 |
| \r | 캐리지 리턴 (줄 바꿈 문자, 커서를 현재 줄의 제일 앞으로 이동) |
| \f | 폼 피드 (줄 바꿈 문자, 커서를 현재 줄의 다음 줄로 이동) |
| \a | 벨 소리 (출력 시 스피커에서 삑 소리 남) |
| \b | 백 스페이스 |
| \000 | 널 문자 |
2️⃣ 연속된 작은 따옴표 3개 또는 큰 따옴표 3개 사용
// 작은 따옴표 3개 사용
>>> multiline='''
... Life is too short
... You need python
... '''
// 큰 따옴표 3개 사용
>>> multiline="""
... Life is too short
... You need python
... """
🔶 문자열 연산하기
1️⃣ 문자열 더하기
>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'
2️⃣ 문자열 곱하기
>>> a = "python"
>>> a * 2
'pythonpython'
3️⃣ 문자열 길이 구하기
>>> a = "Life is too short"
>>> len(a)
17
len() 함수 사용해서 구함
- 파이썬 기본 내장 함수 ⇒ 별도 설정 없이 사용 가능
4️⃣ 문자열 인덱싱 (indexing)
>>> a = "Life is too short, You need Python"
>>> a[3]
'e'
>>> a = "Life is too short, You need Python"
>>> a[0]
'L'
>>> a[12]
's'
>>> a[-1]
'n'
>>> a[-0]
'L'
>>> a[-2]
'o'
>>> a[-5]
'y'
a[-1]: 맨 뒤에서 첫번째 문자
- 인덱스 값에
- 붙으면 뒤에서부터 계산
5️⃣ 문자열 슬라이싱 (slicing)
>>> a = "Life is too short, You need Python"
>>> a[0:4]
'Life'
>>> a[0:3]
'Lif'
0 <= a < 3
>>> a[0:2]
'Li'
>>> a[5:7]
'is'
>>> a[12:17]
'short'
>>> a[19:]
'You need Python'
- 끝 번호 생략 ⇒ 시작 번호 ~ 문자열의 마지막까지 슬라이싱
>>> a[:17]
'Life is too short'
- 시작 번호 생략 ⇒ 문자열의 시작 ~ 끝 번호까지 슬라이싱
>>> a[:]
'Life is too short, You need Python'
- 시작, 끝 번호 생략 ⇒ 문자열의 시작 ~ 마지막까지 슬라이싱
>>> a[19:-7]
'You need'
🔶 문자열 포매팅
1️⃣ 숫자 바로 대입
>>> "I eat %d apples." % 3
'I eat 3 apples.'
- 숫자 넣고 싶은 자리에
%d 문자 넣고 삽입할 숫자는 맨 마지막 % 문자 뒤에 입력
- 여기서
%d ⇒ ‘문자열 포맷 코드’라고 함
2️⃣ 문자열 바로 대입
>>> "I eat %s apples." % "five"
'I eat five apples.'
- 문자열 넣고 싶은 자리에
%s 문자 넣고 삽입할 문자열은 맨 마지막 % 문자 뒤에 입력
3️⃣ 숫자 값 나타내는 변수로 대입
>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'
4️⃣ 2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
'I ate 10 apples. so I was sick for three days.'
- 마지막
% 다음 괄호 안에 ,로 구분해서 각각의 값 입력
5️⃣ 문자열 포맷 코드
| 코드 | 설명 |
|---|
| %s | 문자열 (string) |
| %c | 문자 1개 (character) |
| %d | 정수 (integer) |
| %f | 부동소수 (floating-point) |
| %o | 8진수 |
| %x | 16진수 |
| %% | Literal % (문자 % 자체) |
>>> "I have %s apples" % 3
'I have 3 apples'
>>> "rate is %s" % 3.234
'rate is 3.234'
%s 포맷 코드 ⇒ 어떤 형태의 값이든 변환해 삽입 가능
%s ⇒ % 뒤의 숫자 값을 문자열로 바꿔 대입하므로 %d, %f 중 어떤 것을 사용해야하는지 구분하지 않아도 됨
>>> "Error is %d%." % 98
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: incomplete format
>>> "Error is %d%%." % 98
'Error is 98%.'
%와 포맷 코드가 함께 사용되었을 경우 ‘%’ 기호를 표현하기 위해서는 %%로 사용해야 제대로 출력됨
6️⃣ 문자열 포맷 코드와 숫자 함께 사용하기
✅ 정렬과 공백
>>> "%10s" % "hi"
' hi'
- 전체 문자열 공간 10개
- 대입되는 문자열 오른쪽 정렬
- 나머지 앞은 공백

>>> "%-10sjane." % 'hi'
'hi jane.'
- 전체 문자열 공간 10개 + jane
- hi 문자열 왼쪽 정렬
- 나머지 뒤는 공백

✅ 소수점 표현하기
>>> "%0.4f" % 3.42134234
'3.4213'
.: 소수점 포인트
4: 소수점 뒤에 나올 숫자의 개수
%0.4f ⇒ 0 생략해 %.4f처럼 사용하기도 함
>>> "%10.4f" % 3.42134234
' 3.4213'
- 숫자 3.42134234를 소수점 네번째 자리까지만 표시
- 문자열 길이 10개인 공간에서 오른쪽 정렬

- 문자열의 format 함수 사용 ⇒ 발전된 스타일로 문자열 포맷 지정 가능
✅ 숫자 바로 대입
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
{0} 자리에 format 함수의 매개변수 대입
✅ 문자열 바로 대입
>>> "I eat {0} apples".format("five")
'I eat five apples'
{0} 자리에 format 함수의 매개변수 대입
✅ 숫자 값 가진 변수 대입
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
{0} 자리에 format 함수의 매개변수 값 대입
✅ 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.'
{0}, {1} 같은 인덱스 항목 ⇒ format 함수의 입력값으로 바뀜
✅ 이름으로 넣기
>>> "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.'
- 인덱스 항목 대신
{name} 형태 사용
{name} 형태 사용 시 format 함수에는 반드시 name = value 형태의 입력값 있어야 함
✅ 인덱스, 이름 혼용해서 넣기
>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
✅ 왼쪽 정렬
>>> "{0:<10}".format("hi")
'hi '
:<10
- 치환되는 문자열 왼쪽 정렬
- 문자열 전체 자리수 10개
✅ 오른쪽 정렬
>>> "{0:>10}".format("hi")
' hi'
0:>10
- 치환되는 문자열 오른쪽 정렬
- 문자열 전체 자리수 10개
✅ 가운데 정렬
>>> "{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'
- format 함수 사용 ⇒ 소수점 4자리까지 표현
>>> "{0:10.4f}".format(y)
' 3.4213'
✅ {, } 문자 표현
>>> "{{ and }}".format()
'{ and }'
- 중괄호 (
{})를 포매팅 문자가 아닌 문자 그대로 사용 시 {{}}처럼 2개 연속 사용
7️⃣ f 문자열 포매팅
- 파이썬 3.6 버전부터 사용 가능한 기능
- 문자열 앞에 f 붙이면 사용 가능
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
>>> age = 30
>>> f'나는 내년이면 {age + 1}살이 된다.'
'나는 내년이면 31살이 된다.'
- f 문자열 포매팅 ⇒ 표현식 지원
표현식: 중괄호 안의 변수를 계산식과 함께 사용
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
- 위의 코드처럼 딕셔너리 사용 가능
딕셔너리: key, value를 한 쌍으로 가지는 자료형
>>> 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}'
'3.4213'
>>> f'{y:10.4f}'
' 3.4213'
8️⃣ 문자열 관련 함수
✅ count: 문자 개수 세기
>>> a = "hobby"
>>> a.count('b')
2
✅ find: 위치 알려주기
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
- 문자열 중 문자 ‘b’가 처음으로 나온 위치의 인덱스 값 반환
- 찾는 문자나 문자열 존재하지 않는 경우
-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
- 문자열 중 문자 ‘t’가 처음 나온 위치의 인덱스 값 바놘
- 찾는 문자나 문자열 존재하지 않는 경우 오류 발생
✅ join: 문자열 삽입
>>> ",".join('abcd')
'a,b,c,d'
✅ upper: 소문자를 대문자로 바꾸기
>>> a = "hi"
>>> a.upper()
'HI'
✅ lower: 대문자를 소문자로 바꾸기
>>> a = "HI"
>>> a.lower()
'hi'
✅ lstrip: 왼쪽 공백 지우기
>>> a = " hi "
>>> a.lstrip()
'hi '
- 문자열 중 가장 왼쪽에 있는 한 칸 이상의 연속된 공백 모두 삭제
✅ rstrip: 오른쪽 공백 지우기
>>> a= " hi "
>>> a.rstrip()
' hi'
- 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 공백 모두 삭제
✅ strip: 양쪽 공백 지우기
>>> a = " hi "
>>> a.strip()
'hi'
✅ replace: 문자열 바꾸기
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
replace(바뀔 문자열, 바꿀 문자열)
- 문자열 내의 특정 값을 다른 값으로 치환
✅ split: 문자열 나누기
>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
- 괄호 안에 아무 값을 넣어주지 않는 경우 ⇒ 공백 (space, tab, enter) 기준으로 문자열 나눔
- 괄호 안에 특정 값이 있는 경우 ⇒ 해당 값을 구분자로 문자열 나눔
💡 참고 사이트