문자열(String)

2023. 2. 24. 23:26Python/실전 예제로 배우는 파이썬 프로그래밍

문자열 

문자들의 집합으로 단일 따옴표('), 이중 따옴표("), 삼중 따옴표('''or""")를 사용하여 문자뜰을 감싼 형태로 표현합니다.

 

문자열 유형 예시

# 문자열 유형
oneLine = "this is one line string"
print (oneline)

this is one line string

multiLine = """this is
multi line
string"""
print(multiLine)

this is
multi line
string

multiLine2 ="this is\nmulti line\nstring"
print(multiLine2)

this is
multi line
string

oneLine  변수는 한 줄의 문자열 객체를 할당받는 변수입니다.

단일 따옴표를 이용하여 'this is one line string' 형식으로 표기할 수 있습니다.

 

문자열 특징

문자들의 집합으로 일정한 순서를 가지는데, 색인(index)이라는 용어로 부릅니다.

색인을 이용하면 문자열을 구성하는 특정 문자를 참조할 수 있습니다.

 

문자열 색인과 연산 예시

# (1) 문자열 색인
string = "PYTHON"
print(string[0])
print(string[5])
print(string[-1])
print(string[-6])

P
N
N
P

# (1) 문자열 연산
print("python" + " program")	# 결합연산자

python program

#print("python-" + 3.7 + ".exe")	# error
print("python-" + str(3.7) + ".exe")	# python-3.7.exe

python-3.7.exe

print("-"*30)	# 반복연산자

#(1) 문자열 색인

string [0]은 string 객체의 첫 번째 문자를 가리키는 색인이고, string [-1]은 string의 마지막 문자를 가리키는 색인입니다.

 

#(2) 문자열 연산

문자열과 문자열을 대상으로 덧셈(+) 연산자를 사용할 경우 두 개의 문자열을 결합하는 결합연산자 역할을 합니다. 

문자열과 숫자를 결합할 경우에 오류가 발생하는데, 해결하려면 str() 함수에 숫자를 인자로 넣고, 문자형으로 변환한 후 결합연산을 하면 됩니다.

 

슬라이싱(slicing)

색인의 범위를 이용하여 특정 문자열을 대상으로 부분 문자열을 생성하는 기법.

슬라이싱을 위한 색인의 범위는 시작과 끝 색인 사이에 콜론(:) 기호를 사용합니다.

*문자열[시작색인 : 끝색인 : 증감값]

 

슬라이싱 예시 

# (1) 왼쪽 기준
print(oneLine)

this is one line string

print("문자열 길이 : ", len(oneLine))

문자열 길이 : 23

print(oneLine[0 : 4])

this

print(oneLine[:4])

this

print(oneLine[:])	# 전체 원소

this is one line string

print(oneLine[::2])	# 2의 배수 Index

ti soeln tig

# (2) 오른쪽 기준
print(oneLine[0:-1:2])

ti soeln ti

print(oneLine[-6:-1]

strin

print(oneLine[-6:])

string

# (3) 부분 문자열 생성
subString = oneLine[-11: ]
print(subString)

line string

#(1) 왼쪽 기준

oneLine 문자형 객체는 23개의 문자 집합으로 구성되어 있습니다. oneLine[0:4]는 0부터 4 이전까지의 색인에 해당하는 문자열이 슬라이싱 됩니다. oneLine [:4]는 처음부터 4 이전까지의 색인에 해당하는 문자열이 슬라이싱 됩니다. 그리고 oneLine [:]는 전체 문자열이 선택되고, oneLine [::2]는 전체를 대상으로 색인이 2씩 증가하여 슬라이싱 됩니다.

 

#(2) 오른쪽 기준

oneLine[0 :-1  :2]는 왼쪽 처음부터 오른쪽 끝 이전까지 2씩 증가하여 슬라이싱 됩니다. oneLine [-6:-1]는 오른쪽 맨 끝을 기준으로 6번째 문자부터 마지막 문자 이전까지 슬라이싱 되고, oneLine [-6:]는 오른쪽 맨 끝을 기준으로 6번째 문자부터 마지막 문자까지 슬라이싱 됩니다.

 

#(3) 부분 문자열 생성

oneLine[-11: ]는 오른쪽 맨 끝을 기준으로 11번째 문자에서 마지막 문자까지 슬라이싱하여 subString 변수에 새로운 객체로 할당됩니다.

 

문자열 처리 함수

문자열 처리 함수는 문자열을 수정하거나 조작하는 함수입니다. 형태소 분석이나 자연어 처리 시 유용하게 이용될 수 있습니다.

 

문자열 처리 함수와 기능

함수명 기능
s.lower() 문자열 s를 모두 소문자로 변경한다.
s.upper() 문자열 s를 모두 대문자로 변경한다.
s.swapcase() 문자열 s의 대문자는 소문자로, 소문자는 대문자로 변경한다.
s.lstrip() 문자열 s의 왼쪽 공백을 모두 지운다.
s.rstrip() 문자열 s의 오른쪽 공백을 모두 지운다.
s.strip() 문자열 s의 양쪽 공백을 모두 지운다.
s.count(x) 문자열 s에서 x와 일치하는 문자의 개수를 반환한다.
s.find(x) 문자열 s에서 문자 x가 처음으로 나온 위치를 반환한다. (없으면 -1 반환)
s.rfind(x) 문자열 s에서 문자 x가 처음으로 나온 위치를 오른쪽 끝에서부터 찾는다.
s.index(x) 문자열 s에서 문자 x가 처음으로 나온 위치를 반환한다. (없으면 에러 발생)
'구분자'.join(s) 문자열 s를 구성하는 요소 문자를 '구분자'로 결합시킨다.
s.replace(x, r) 문자열 s를 대상으로 x라는 문자를 r이라는 문자로 교체하다.
s.split('구분자') 문자열 s에서 '구분자'를 기준으로 문자열을 분리시킨다.
s.startswith('H') H라는 문자로 시작되는지 여부를 True 또는 False로 반환한다.

문자열 처리 함수 예시

# (1) 특정 글자 수 반환
oneLine = "this is one line string"
print('t 글자 수 : ', oneLine.count('t'))

t 글자 수 : 2

# (2) 접두어 문자 비교 판단
print(oneLine.startswith('this'))

True

print(oneLine.startswith('this'))

False

# (3) 문자열 교체
print(oneLine.replace('this', 'that'))

that is one line string

# (4) 문자열 분리(split) : 문단 -> 문장
multiLine = """this is
multi line
string"""
sent = multiLine.split('\n')
print('문장 : ', sent)

문장 : ['this is', 'multi line', 'string']

# (5) 문자열 분리(split)2 : 문장 -> 단어
words = oneLine.split(' ')	# split(sep = ' ') : default
print('단어 :', words)

단어 : ['this', 'is', 'one', 'line', 'string']

# (6) 문자열 결합(join) : 단어 -> 문장
sent2 = ','.join(words)	# '구분자'.join(string)
print(sent2)	# this, is, one, line, string

this, is, one, line, string

# (1) 특정 글자 수 변환

oneLine 문자열에서 count() 함수는 't'문자가 출현된 수를 반환하는 함수입니다.

 

# (2) 접두어 문자 비교 판단

oneLine 문자열에서 startswith() 함수는 접두어가 'this'이면 True를 반환하고, 다른 접두어면 False를 반환합니다.

 

# (3) 문자열 교체

oneLine 문자열에서 replace() 함수는 'this'를 'that'으로 교체하는 역할을 합니다.

 

# (4) 문자열 분리(split): 문단 -> 문장

multiLine 문자열을 대상으로 split() 함수는 줄 바꿈('\n') 구분자를 기준으로 문자열을 분리합니다. 여러 줄의 문장을 갖는 문단으로부터 줄 단위 문장을 만들 때 이용합니다.

 

# (5) 문자열 분리(split) 2: 문장 -> 단어

multiLine 문자열을 대상으로 split() 함수는 공백(' ') 구분자를 기준으로 문자열을 분리합니다. 문단으로부터 단어를 만들 때 이용합니다.

 

# (6) 문자열 결합(join): 단어 -> 문장

문자열이 분리된 words를 대상으로 join() 함수는 구분자 콤마(')를 기준으로 다시 하나의 문자열로 결합합니다. 단어를 문장으로 만들 때 이용합니다.

 

이스케이프 문자

어떤 기능으로부터 벗어난 기능을 의미합니다. 프로그램의 명령어 이외에 특수기능을 갖는 문자들을 일컫습니다.

 

이스케이프 문자와 처리 내용

이스케이프 문자 처리 내용
\n 줄바꿈 처리
\t Tab키 처리
\r 캐리지 리턴 처리(다음 줄 첫 칸으로 이동 기능)
\f 폼 피드 처리(한 페이지 넘김 기능)
\b 백 스페이스 처리
\\ 문자 "\" 처리
\' 문자 '처리
\" 문자 "처리
\000 널 문자 처리

 

이스케이프 문자 기능 차단 예시

# (1) escape 문자 적용
print('escape 문자 차단 ')

escape 문자 차단

print('\n출력 이스케이프 문자')	# \n : 줄 바꿈 기능

출력 이스케이프 문자

# (2) escape 문자 기능 차단
print('\\n출력 이스케이프 기능 차단1')

\n출력 이스케이프 차단1

print(r'\n출력 이스케이프 기능 차단2')

\n출력 이스케이프 기능 차단2

# (3) 경로 표현 : C:\Python\test
print('path =', 'C:\Python\test')

path = C:\Python est

print('path =', 'C:\\Python\\test')

path = C:\Python\test

print('paht =', r'C:\Python\test')

path = C:\Python\test

# (1) escape 문자 적용

"\n출력 이스케이프 문자" 형식으로 문자열을 출력하면 한 줄을 건너뛴 다음에 '출력 이스케이프 문자'의 문자열이 출력됩니다.

 

# (2) escape 문자 기능 차단

이스케이프 문자 앞에 역슬래시(\)를 하나 더 붙이거나 문자열 앞에 r를 붙여서 줄 바꿈 이스케이프 문자 기능을 차단하고, 문자열 '\n'을 출력합니다.

 

# (3) 경로 표현

폴더와 파일의 경로를 문자열로 출력하기 위해서 이스케이프 문자 기능을 차단하고 있습니다. 만약 차단하지 않으면 '\test' 문자열의 '\t'에 의해서 탭(Tab) 키 기능이 적용됩니다.

'Python > 실전 예제로 배우는 파이썬 프로그래밍' 카테고리의 다른 글

조건문  (0) 2023.02.26
파이썬 기본 도구 익히기 연습문제  (0) 2023.02.25
표준입출력장치  (2) 2023.02.23
연산자(Operator)  (0) 2023.02.22
변수와 자료형  (0) 2023.02.21