🔗 출처

📘 Jump to Python 

02 파이썬 프로그래밍의 기초, 자료형

02-2 문자열 자료형


  1. 문자열은 어떻게 만들고 사용할까?
    1. 큰따옴표로 양쪽 둘러싸기
    2. 작은따옴표로 양쪽 둘러싸기
    3. 큰따옴표 3개를 연속으로 써서 양쪽 둘러싸기
    4. 작은따옴표 3개를 연속으로 써서 양쪽 둘러싸기
  2. 문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때
    1. 문자열에 작은따옴표 포함하기
    2. 문자열에 큰따옴표 포함하기
    3. 역슬래시를 사용해서 작은따옴표와 큰따옴표를 문자열에 포함하기
  3. 여러 줄인 문자열을 변수에 대입하고 싶을 때
    1. 줄을 바꾸기 위한 이스케이프 코드 \n 삽입하기
    2. 연속된 작은따옴표 3개 또는 큰따옴표 3개 사용하기
  4. 문자열 연산하기
    1. 문자열 더해서 연결하기
    2. 문자열 곱하기
    3. 문자열 곱하기를 응용하기
  5. 문자열 길이 구하기
  6. 문자열 인덱싱과 슬라이싱
    1. 문자열 인덱싱
    2. 문자열 인덱싱 활용하기
    3. 문자열 슬라이싱
    4. 문자열을 슬라이싱하는 방법
    5. 슬라이싱으로 문자열 나누기
  7. 문자열 포매팅이란?
  8. fomat 함수를 사용한 포매팅 
    1. 숫자, 문자열, 변수 바로 대입하기
    2. 2개 이상의 값 넣기
    3. 이름으로 넣기
    4. 인덱스와 이름을 혼용해서 넣기
    5. 왼쪽, 오른쪽, 가운데 정렬
    6. 공백 채우기
    7. 소수점 표현하기
    8. { 또는 } 문자 표현하기
  9. f 문자열 포매팅
  10. 문자열 관련 함수들
    1. 문자 개수 세기 - count
    2. 위치 알려 주기  - find, index
    3. 문자열 삽입 - join
    4. 소문자를 대문자로 바꾸기 - upper
    5. 대문자를 소문자로 바꾸기 - lower
    6. 공백 지우기
      1. 왼쪽 - lstrip
      2. 오른쪽 - rstrip
      3. 양쪽 - strip
    7. 문자열 바꾸기 - replace
    8. 문자열 나누기 - split

1. 문자열은 어떻게 만들고 사용할까?

문자열 만드는 방법 4가지

 

1.1. 큰따옴표로 양쪽 둘러싸기

"Hello World"

 

 

1.2. 작은따옴표로 양쪽 둘러싸기

'Python is fun'

 

 

1.3. 큰따옴표 3개를 연속으로 써서 양쪽 둘러싸기

"""Life is too short, You need python"""

 

 

1.4. 작은따옴표 3개를 연속으로 써서 양쪽 둘러싸기

'''Life is too short, You need python'''

2. 문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때

문자열을 만들어 주는 주인공은 작은따옴표(')와 큰따옴표(")이다.

그런데 문자열 안에서도 작은따옴표와 큰따옴표가 들어 있어야 할 경우가 있다.

 

2.1. 문자열에 작은따옴표 포함하기

Python's favorite food is perl

 

이 문장을 food 변수에 저장하고 대화형 인터프리터를 열고 다음과 같이 입력해 본다.

food = "Python's favorite food is perl"

print(food)
"Python's favorite food is perl"

 

문자열을 큰따옴표가 아닌 작은따옴표로 둘러싼 후 다시 실행해 보면,

>>> food = 'Python's favorite food is perl'
  File "<stdin>", line 1
    food = 'Python's favorite food is perl'
                   ^
SyntaxError: invalid syntax

'Python'이 문자열로 인식되어 구문오류(SyntaxError)가 발생한다.

 

2.2. 문자열에 큰따옴표 포함하기

say = '"Python is very easy." he says.'

이렇게 입력하면 출력할 때,

print(say)

"Python is very easy." he says.

큰따옴표가 함께 포함되어 출력이 된다.

 

2.3. 역슬래시를 사용해서 작은따옴표와 큰따옴표를 문자열에 포함하기

food = 'Python\'s favorite food is perl'
say = "\"Python is very easy.\" he says."

 

  • 작은따옴표나 큰따옴표를 문자열에 포함시키는 또 다른 방법은 역슬래시(\)를 쓴다.
  • \"\'를 쓰면 Python's favorite food is perl, "Python is very easy." he says.로 출력이 됩니다.

3. 여러 줄인 문자열을 변수에 대입하고 싶을 때

# 결괏값 출력하기
Life is too short
You need python

 

3.1. 줄을 바꾸기 위한 이스케이프 코드 \n 삽입하기

multiline = "Life is too short\nYou need python"

위 예처럼 줄 바꿈 문자인 \n을 삽입하는 방법이 있지만, 읽기가 불편하고 줄이 길어지는 단점이 있다.

 

3.2. 연속된 작은따옴표 3개 또는 큰따옴표 3개 사용하기

작은따옴표(''') 3개 사용하여 문자열 여러 줄 입력하기
multiline='''
    Life is too short
    You need python
    '''
큰따옴표(""") 3개 사용하여 문자열 여러 줄 입력하기
multiline="""
    Life is too short
    You need python
    """
결괏값
print(multiline)
Life is too short
You need python

 

이스케이프 코드란?
: 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 '문자 조합'을 말한다.
: 주로 출력물을 보기 좋게 정렬하는 용도로 사용한다.
코드 설명
\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\\ \를 그대로 표현할 때 사용
\' 작은따옴표(')를 그대로 표현할 때 사용
\" 큰따옴표(")를 그대로 표현할 때 사용
\r 캐리지 리턴(줄 바꿈 문자, 커서를 현재 줄의 가장 앞으로 이동)
\f 폼 피드(줄 바꿈 문자, 커서를 현재 줄의 다음 줄로 이동)
\a 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 난다)
\b 백 스페이스
\000 널 문자

4. 문자열 연산하기

4.1. 문자열 더해서(+) 연결하기

문자열을 +로 붙여서 출력하면 두 문자열이 연결되어 출력된다.
head = "Python"
tail = " is fun!"

print(head + tail)
'Python is fun!'

 

4.2. 문자열 곱하기

문자열에서 *의 의미는 문자열의 반복을 뜻한다.
a = "python"

print(a * 2)
'pythonpython'

 

4.3. 문자열 곱하기를 응용하기

프로그램 제목 입력하기
print("=" * 50)
print("My Program")
print("=" * 50)
결괏값
# C:\Users>cd C:\doit
# C:\doit>python multistring.py
==================================================
My Program
==================================================

5. 문자열 길이 구하기

문자열의 길이에는 공백 문자도 포함된다.
a = "Life is too short"

print(len(a))
17

6. 문자열 인덱싱과 슬라이싱

6.1. 문자열 인덱싱

인덱싱(indexing)이란 무언가를 '가리킨다'는 뜻으로, a[번호]의 형태로 문자열 안의 특정한 값을 뽑아내는 역할을 한다.
a = "Life is too short, You need Python"
print(a[3])

'e'

 

"파이썬은 0부터 숫자를 센다"

  • a[3]이 뜻하는 것은 a라는 문자열의 네 번째 문자 'e'를 말한다.

 

6.2. 문자열 인덱싱 활용하기

뒤에서부터 읽고 싶을 땐 a[-번호]를 쓰면 된다.
a = "Life is too short, You need Python"

print(a[0])
print(a[-0])
'L'

print(a[12])
's'

print(a[-1])
'n'

print(a[-2])
'o'

print(a[-5])
'y'

 

6.3. 문자열 슬라이싱

a[시작_번호 : 끝_번호 : 간격]
a = "Life is too short, You need Python"

print(a[0:4])
'Life'

 

  • a[0:4]는 a 문자열에서 0번째부터 4번째까지의 문자를 뽑아내겠다는 뜻이다.

 

슬라이싱의 끝_번호에 해당되는 문자는 포함하지 않는다.
print(a[0:3])
'Lif'

 

6.4. 문자열을 슬라이싱하는 방법

공백 문자도 다른 문자들과 동일하게 취급된다.
print(a[0:5])
'Life '
항상 시작 번호가 0일 필요는 없다.
print(a[0:2])
'Li'

print(a[5:7])
'is'

print(a[12:17])
'short'
끝 번호 부분을 생략하면 시작 번호부터 해당 문자열의 끝까지 뽑아낸다.
print(a[19:])
'You need Python'
시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아낸다.
print(a[:])
'Life is too short, You need Python'
슬라이싱에서도 - 기호를 사용할 수 있다.
print(a[19:-7])
'You need'

 

6.5. 슬라이싱으로 문자열 나누기

a = "20230331Rainy"

year = a[:4]
day = a[4:8]
weather = a[8:]

print(year)
'2023'

print(day)
'0331'

print(weather)
'Rainy'

 

문자열 수정하기
(문자열은 '변경 불가능한 자료형(immutable)'이라고 불린다.
a = "Pithon"

print(a[:1])
'P'

print(a[2:])
'thon'

print(a[:1] + 'y' + a[2:])
'Python'

 

그렇기 때문에 슬라이싱을 통해서 수정하려는 문자를 기준으로 앞, 뒤로 분해해 준 뒤, 사이에 추가하여 수정해야 한다.

 

7. 문자열 포매팅이란?

문자열 안에 어떤 값을 삽입 및 변경하는 방법이다.
"현재 온도는 18도입니다."​
"현재 온도는 20도입니다"​

 

8. format 함수를 사용한 포매팅

8.1. 숫자, 문자열, 변수 바로 대입하기

숫자 바로 대입하기
print("I eat {0} apples".format(3))
'I eat 3 apples'
문자열 바로 대입하기
print("I eat {0} apples".format("five"))
'I eat five apples'
변수 바로 대입하기
number = 3
print("I eat {0} apples".format(number))
'I eat 3 apples'

 

8.2. 2개 이상의 값 넣기

number = 10
day = "three"

print("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.'

 

8.3. 이름으로 넣기

print("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.'
  • 그래서 {number}와 {day}로 입력하여도 되는데, 이때는 .format(number=10, day=3)로 입력해야 한다.

 

8.4. 인덱스와 이름을 혼용해서 넣기

print("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}, {day} 이렇게 혼용해서 쓸 수도 있다.

 

8.5. 왼쪽, 오른쪽, 가운데 정렬

왼쪽 정렬 :<10
print("{0:<10}".format("hi"))
'hi        '
오른쪽 정렬 :>10
print("{0:>10}".format("hi"))
'        hi'
가운데 정렬 :^
print("{0:^10}".format("hi"))
'    hi    '

 

8.6. 공백 채우기

print("{0:=^10}".format("hi"))
'====hi===='

print("{0:!<10}".format("hi"))
'hi!!!!!!!!'
  • 정렬할 때 공백 문자 대신 지정한 문자 값으로 채워 넣을 수도 있다.
  • 채워 넣을 문자 값은 정렬 문자 <, >, ^ 바로 앞에 넣어야 한다.

 

8.7. 소수점 표현하기

y = 3.42134234
print("{0:0.4f}".format(y))
'3.4213'
  • format 함수를 사용해서 소수점 4자리까지만 표현하는 방법이다.

 

8.8. { 또는 } 문자 표현하기

print("{{ and }}".format())
'{ and }'
  • {}와 같은 중괄호 문자를 포매팅 문자가 아닌 문자 그대로 사용하고 싶은 경우에는 {{}}처럼 2개 연속으로 사용하면 된다.

9. f 문자열 포매팅

파이썬 3.6 버전부터 f 문자열 포매팅 기능을 사용할 수 있다.

name = '홍길동'
age = 30
print(f'나의 이름은 {name}입니다. 나이는 {age}입니다.')
'나의 이름은 홍길동입니다. 나이는 30입니다.'
  • name, age와 같은 변숫값을 생성한 후에 그 값을 참조할 수 있다.
  • f 문자열 포매팅은 표현식을 지원한다.
표현식이란?
중괄호 안의 변수를 계산식과 함께 사용하는 것이다.
age = 30
print(f'나는 내년이면 {age + 1}살이 된다.')
'나는 내년이면 31살이 된다.'

 

딕셔너리의 f 문자열 포매팅
d = {'name':'홍길동', 'age':30}
print(f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.')
'나의 이름은 홍길동입니다. 나이는 30입니다.'
정렬
print(f'{"hi":<10}')  # 왼쪽 정렬
'hi        '

print(f'{"hi":>10}')  # 오른쪽 정렬
'        hi'

print(f'{"hi":^10}')  # 가운데 정렬
'    hi    '
공백 채우기
print(f'{"hi":=^10}')  # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='

print(f'{"hi":!<10}')  # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'
소수점
y = 3.42134234
print(f'{y:0.4f}')  # 소수점 4자리까지만 표현
'3.4213'

print(f'{y:10.4f}')  # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
'    3.4213'
문자 그대로 {} 출력하기 
print(f'{{ and }}')
'{ and }'

10. 문자열 관련 함수들

10.1. 문자 개수 세기

.count()
a = "hobby"
print(a.count('b'))
2

 

10.2. 위치 알려 주기

.find()
a = "Python is the best choice"

print(a.find('b'))
14

# 없을 시, -1 반환
print(a.find('k'))
-1
a = "Life is too short"

print(a.index('t'))
8

# 없을 시, 오류 발생
print(a.index('k'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found

 

10.3. 문자열 삽입

"".join()
print(",".join('abcd'))
'a,b,c,d'
  • 문자열뿐만 아니라 리스트, 튜플도 입력으로 사용할 수 있다.
리스트 예시
print(",".join(['a', 'b', 'c', 'd']))
'a,b,c,d'

 

10.4. 소문자를 대문자로 바꾸기

.upper()
변경된 값을 리턴한다.
a = "hi"
print(a.upper())
'HI'

 

10.5. 대문자를 소문자로 바꾸기

.lower()
변경된 값을 리턴한다.
a = "HI"
print(a.lower())
'hi'

 

10.6. 공백 지우기

10.6.1. 왼쪽 공백 모두 지우기

.lstrip()
변경된 값을 리턴한다.
a = " hi "
print(a.lstrip())
'hi '

 

10.6.2. 오른쪽 공백 모두 지우기

.rstrip()
변경된 값을 리턴한다.
a= " hi "
print(a.rstrip())
' hi'

 

10.6.3. 양쪽 공백 모두 지우기

.strip()
변경된 값을 리턴한다.
a = " hi "
print(a.strip())
'hi'

 

10.7. 문자열 바꾸기

.replace(바뀔 문자열, 바꿀 문자열)
변경된 값을 리턴한다.
a = "Life is too short"
print(a.replace("Life", "Your leg"))
'Your leg is too short'

 

10.8. 문자열 나누기

.split()
1. 변경된 값을 리턴한다.
2. 괄호 안에 아무것도 넣지 않으면 공백을 기준으로 나누어진다.
a = "Life is too short"

print(a.split())
['Life', 'is', 'too', 'short']

b = "a:b:c:d"

print(b.split(':'))
['a', 'b', 'c', 'd']

 

+ Recent posts