문자열 조작

이스케이프 문자

이스케이프 문자는 백슬래시 \ 뒤에 삽입하려는 문자를 입력하여 생성됩니다.

이스케이프 문자출력 결과
\'작은따옴표
\"큰따옴표
\t
\n줄 바꿈 (새 줄)
\\백슬래시
\b백스페이스
\ooo8 진수 값
\r캐리지 리턴
# 이스케이프 문자: 백슬래시를 사용하여 특수 문자 삽입
# \n = 줄 바꿈, \' = 작은따옴표
print("Hello there!\nHow are you?\nI\'m doing fine.")
Hello there!
How are you?
I'm doing fine.

원시 문자열 (Raw strings)

원시 문자열은 모든 이스케이프 문자를 완전히 무시하고 문자열에 나타나는 모든 백슬래시를 그대로 출력합니다.

# 원시 문자열 (r 접두사): 백슬래시를 리터럴 문자로 취급
print(r"Hello there!\nHow are you?\nI\'m doing fine.")  # \n이 문자 그대로 출력됨
Hello there!\nHow are you?\nI\'m doing fine.

원시 문자열은 주로 정규 표현식 정의에 사용됩니다.

퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

Python 에서 원시 문자열 (r로 접두사가 붙은 문자열) 은 어떤 역할을 합니까?
A. 모든 문자를 대문자로 변환합니다
B. 백슬래시를 리터럴 문자로 취급하여 이스케이프 시퀀스를 무시합니다
C. 모든 공백을 제거합니다
D. 문자열을 뒤집습니다

여러 줄 문자열 (Multiline Strings)

print(
"""Dear Alice,

Eve's cat has been arrested for catnapping,
cat burglary, and extortion.

Sincerely,
Bob"""
)
Dear Alice,

Eve's cat has been arrested for catnapping,
cat burglary, and extortion.

Sincerely,
Bob

문자열 인덱싱 및 슬라이싱

H   e   l   l   o       w   o   r   l   d    !
0   1   2   3   4   5   6   7   8   9   10   11

인덱싱 (Indexing)

# 문자열 인덱싱: 위치 (0 부터 시작) 로 문자에 접근
spam = 'Hello world!'

spam[0]  # 첫 번째 문자 반환: 'H'
'H'
spam[4]
'o'
spam[-1]
'!'

슬라이싱 (Slicing)

# 문자열 슬라이싱: [시작:끝] 구문을 사용하여 부분 문자열 추출
spam = 'Hello world!'

spam[0:5]  # 인덱스 0 부터 4 까지의 문자 반환: 'Hello'
'Hello'
spam[:5]
'Hello'
spam[6:]
'world!'
spam[6:-1]
'world'
spam[:-1]
'Hello world'
spam[::-1]
'!dlrow olleH'
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

spam[::-1]은 문자열에 대해 어떤 작업을 수행합니까?
A. 첫 번째 문자를 반환합니다
B. 마지막 문자를 반환합니다
C. 문자열을 뒤집습니다
D. 모든 문자를 제거합니다
fizz = spam[0:5]
fizz
'Hello'

in 및 not in 연산자

'Hello' in 'Hello World'
True
'Hello' in 'Hello'
True
'HELLO' in 'Hello World'
False
'' in 'spam'
True
'cats' not in 'cats and dogs'
False

upper(), lower() 및 title()

문자열을 대문자, 소문자 및 제목 케이스로 변환합니다:

greet = 'Hello world!'
greet.upper()
'HELLO WORLD!'
greet.lower()
'hello world!'
greet.title()
'Hello World!'

isupper() 및 islower() 메서드

문자열이 대문자 또는 소문자인지 평가한 후 True 또는 False를 반환합니다:

spam = 'Hello world!'
spam.islower()
False
spam.isupper()
False
'HELLO'.isupper()
True
'abc12345'.islower()
True
'12345'.islower()
False
'12345'.isupper()
False

isX 문자열 메서드

메서드설명
isalpha()문자열이 오직 문자로만 구성되어 있으면 True를 반환합니다.
isalnum()문자열이 오직 문자와 숫자로만 구성되어 있으면 True를 반환합니다.
isdecimal()문자열이 오직 숫자로만 구성되어 있으면 True를 반환합니다.
isspace()문자열이 오직 공백, 탭, 줄 바꿈 문자로만 구성되어 있으면 True를 반환합니다.
istitle()문자열이 오직 첫 글자는 대문자이고 나머지는 소문자인 단어들로만 구성되어 있으면 True를 반환합니다.

startswith() 및 endswith()

'Hello world!'.startswith('Hello')
True
'Hello world!'.endswith('world!')
True
'abc123'.startswith('abcdef')
False
'abc123'.endswith('12')
False
'Hello world!'.startswith('Hello world!')
True
'Hello world!'.endswith('Hello world!')
True
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

startswith()은 무엇을 반환합니까?
A. 문자열이 지정된 부분 문자열로 시작하면 True를 반환하고, 그렇지 않으면 False를 반환합니다
B. 시작 부분과 일치하는 부분 문자열
C. 부분 문자열이 시작되는 인덱스
D. 접두사가 없는 새 문자열

join() 및 split()

join()

join() 메서드는 리스트, 딕셔너리, 튜플 또는 집합과 같은 반복 가능한 (iterable) 객체의 모든 항목을 가져와 문자열로 결합합니다. 구분자를 지정할 수도 있습니다.

''.join(['My', 'name', 'is', 'Simon'])
'MynameisSimon'
', '.join(['cats', 'rats', 'bats'])
'cats, rats, bats'
' '.join(['My', 'name', 'is', 'Simon'])
'My name is Simon'
'ABC'.join(['My', 'name', 'is', 'Simon'])
'MyABCnameABCisABCSimon'

split()

split() 메서드는 stringlist로 분할합니다. 기본적으로 공백을 사용하여 항목을 구분하지만, 원하는 다른 문자를 설정할 수도 있습니다:

'My name is Simon'.split()
['My', 'name', 'is', 'Simon']
'MyABCnameABCisABCSimon'.split('ABC')
['My', 'name', 'is', 'Simon']
'My name is Simon'.split('m')
['My na', 'e is Si', 'on']
' My  name is  Simon'.split()
['My', 'name', 'is', 'Simon']
' My  name is  Simon'.split(' ')
['', 'My', '', 'name', 'is', '', 'Simon']
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

문자열에서 split()을 호출하면 무엇이 반환됩니까?
A. 문자열
B. 문자열 리스트
C. 문자열 튜플
D. 딕셔너리

rjust(), ljust() 및 center() 를 사용한 텍스트 정렬

'Hello'.rjust(10)
'     Hello'
'Hello'.rjust(20)
'               Hello'
'Hello World'.rjust(20)
'         Hello World'
'Hello'.ljust(10)
'Hello     '
'Hello'.center(20)
'       Hello       '

rjust()ljust()의 선택적 두 번째 인수는 공백 문자 외에 채울 문자를 지정합니다:

'Hello'.rjust(20, '*')
'***************Hello'
'Hello'.ljust(20, '-')
'Hello---------------'
'Hello'.center(20, '=')
'=======Hello========'

strip(), rstrip(), 및 lstrip() 을 사용한 공백 제거

spam = '    Hello World     '
spam.strip()
'Hello World'
spam.lstrip()
'Hello World     '
spam.rstrip()
'    Hello World'
spam = 'SpamSpamBaconSpamEggsSpamSpam'
spam.strip('ampS')
'BaconSpamEggs'

Count 메서드

적용되는 문자열에서 주어진 문자 또는 부분 문자열의 발생 횟수를 셉니다. 선택적으로 시작 및 끝 인덱스를 제공할 수 있습니다.

sentence = 'one sheep two sheep three sheep four'
sentence.count('sheep')
3
sentence.count('e')
9
# 문자열 시작부터 6 번째 문자 이후의 e 개수를 반환
sentence.count('e', 6)
8
sentence.count('e', 7)
7

Replace 메서드

주어진 부분 문자열의 모든 발생을 다른 부분 문자열로 대체합니다. 교체 횟수를 제한하기 위해 선택적으로 세 번째 인수를 제공할 수 있습니다. 새 문자열을 반환합니다.

text = "Hello, world!"
text.replace("world", "planet")
'Hello, planet!'
fruits = "apple, banana, cherry, apple"
fruits.replace("apple", "orange", 1)
'orange, banana, cherry, apple'
sentence = "I like apples, Apples are my favorite fruit"
sentence.replace("apples", "oranges")
'I like oranges, Apples are my favorite fruit'
퀴즈

로그인하여 이 퀴즈에 답하고 학습 진행 상황을 추적하세요

replace() 메서드는 무엇을 반환합니까?
A. 원본 문자열을 수정합니다
B. None을 반환합니다
C. 대체가 이루어진 새 문자열을 반환합니다
D. 대체된 문자열 리스트를 반환합니다

관련 링크