본문 바로가기
컴퓨터 프로그래밍/python

Python 문자열 관리(String management)

by JaeBaek 2020. 8. 12.

management (pixabay)

 

 

 

■ 문자열 분리

python은 문자열에 대한 다양한 명령을 제공합니다. 

위 그림처럼 "abcd" 라는 문자열에 대해서 각각의 위치에 대해서 말을 하자면 앞에서 셀 때에는 0으로 시작을 하고, 뒤에서 셀 때에는 -1로 시작을 합니다. 그리고 각각의 개별 문자를 읽을 때에는 [ ] 괄호와 문자의 위치인 첨자를 적으면 우리가 원하는 값을 다룰 수 있습니다. 또한 문자열은 문자로 구성된 리스트의 일종이기 때문에 for을으로 반복을 시킬 수 있습니다.

index check

a="python"

print(a[3])

print(a[-2])

result

p
y
t
h
o
n

위 처럼 예상한 결과가 나오는 것을 확인 하실 수 있습니다. 

 

string with for

for b in a:

    print(b," ")

result

p
y
t
h
o
n

 

※ python 에서 문자열은 다양한 기능을 지원하도록 만들어져있지만 메모리의 절약과 속도를 위해서 문자열의 변경은 불가능 하도록 되어있습니다. 따라서 변경 불가능한 자료형이기 때문에 한번 초기화되면 바꿀 수 없는 특징이 있습니다.

 

 

★ 슬라이스(Slice)

말 그대로 자르기 기능으로 python이라는 문자열에서 우리가 원하는 부분만을 가지고 오고 싶을 때 사용을 합니다. 기본적인 방법으로는 [begen:end:step] 이라는 범위의 원칙에 의해 문자를 추출합니다. 처음을 생략하면 처음부터 마지막을 생략하면 마지막부터 값을 추출합니다.

 

Resident registration number

# Ju="980101-1234567" 에서 생년월일 각각 그리고 주민번호 뒷자리를 추출하라

jumin="980101-1234567"

print("연 : "+jumin[0:2])

print("월 : "+jumin[2:4])

print("일 : "+jumin[4:6])

print("뒷자리 (뒤에서 부터): "+jumin[-3:])

result

연 : 98
월 : 01
일 : 01
뒷자리 (뒤에서 부터): 567

 

 

■ 문자열 메서드

→ 검색

len 함수 : 문자열의 개수를 조사하는 내장 함수

ex) len
a="python"
print(len(a))
# 6

 

find : 인수로 지정한 문자 또는 부분 문자열의 위치를 조사합니다.

ex) find

a="python_python"

print(a.find('o'))

# 4

 

rfind : rear로서 후방에서 검색을 시작하는 것을 말합니다. 여기서 주의할 점은 동일한 문자열을 검색한다고 하더라도 정방향 역방향에 따라서 위치가 나르게 나옵니다. 

ex) rfind

a="python_python"

print(a.rfind('o'))

# 11

 

index : 문자를 찾지만 해당 문자가 없는 경우에 예외가 발생합니다.

 

rindex : 뒤에서 부터 검색을 합니다.

 

count : 특정 문자의 개수를 셉니다. 

ex) count

a="python_python"

print(a.count('o'))

# 2

 

→ 조사

 

in : 특정문자의 존재 여부만 관심이 있을 때 in 구문("단어 in 문자열") 형식으로 사용합니다. 포함된 경우 True, 포함되지 않은 경우 False를 반환하고 not in은 포함되어 있지 않은지를 조사합니다.

ex) in

a="python_python"

print('y' in a)

print('b' in a)

# True

# False

 

startswith : 문자열이 특정 문자로 시작을 하는지 조사합니다. 

endswith : 문자열이 특정 문자로 끝나는지 조사합니다.

startswitch

prog="python"

if prog.startswith('p'):

    print("p로 시작하는 프로그래밍 언어는 python입니다.")

result

p로 시작하는 프로그래밍 언어는 python입니다.

 

ex) endswitch

endswitch

file="good.py"

if file.endswith('.py'):

    print("python 파일이 맞습니다.")

result

python 파일이 맞습니다.

 

이외에 다른 값들을 조사하는 함수로 다양한 것들이 있는데 이들은 모두 만족할 경우 True, False로 반환합니다. 

 

isalpha : 모든 문자가 알파벳인지 조사

islower : 모든 문자가 소문자인지 조사

isupper : 모든 문자가 대문자인지 조사

isspace : 모든 문자가 공백인지 조사

isalnum : 모든 문자가 알파벳 또는 숫자인지 조사

isdecimal : 모든 문자가 숫자인지 조사

isdigit : 모든 문자가 숫자인지 조사

isnumeric : 모든 문자가 숫자인지 조사

isidentifier : 명칭으로 쓸 수 있는 문자로만 구성되어 있는지 조사

isprintable : 인쇄 가능한 문자로만 구성되어 있는지 조사

 

→ 변경

lower : 모든 문자를 소문자로 바꿔줍니다.

upper : 모든 문자를 대문자로 바꿔줍니다.

swapcase : 대소문자를 역전시킵니다.

capitalize : 문장의 첫 글자만 대문자로 바꿔줍니다.

title : 모든 단어의 처음을 대문자로 바꿔줍니다.

 

exchange

a="As long as You love me"

print(a.lower())

print(a.upper())

print(a.swapcase())

print(a.capitalize())

print(a.title())

print(a) # 결과를 보면 알 수 있듯이 여러 변형을 해 주었지만 print(a)로 다시 출력을 하면 원래 값 그대로 이다. 

result

as long as you love me
AS LONG AS YOU LOVE ME
aS LONG AS yOU LOVE ME
As long as you love me
As Long As You Love Me
As long as You love me

 

 

lower 활용

# 파이썬의 영문철자를 입력하고 답이 맞다면 "정답입니다.!"를 출력하는 코드를 작성하라. ( 대소문자 구분X)

que=input("파이썬의 영어 철자는? : ")

if que.lower()=='python':

    print("정답입니다.!")

result

파이썬의 영어 철자는? : python
정답입니다.!

 

strip : 불필요한 공백을 제거하기 위해 사용합니다. 문장 주변 앞뒤 공백을 모두 제거합니다.

lstrip : 앞쪽 공백을 제거합니다. 

rstrip : 뒤쪽 공백을 제거합니다.

 

strip 활용

a="    python     "

print(a+"is really great!"# 아무 변화없이 문장 잇기

print(a.strip()+"is really great"# python 앞뒤 공백 제서

print(a.lstrip()+"is really great"# 앞 공백 제거

print(a.rstrip()+"is really great"# 뒷 공백 제거

result

    python     is really great!
pythonis really great
python     is really great
    pythonis really great

→ 분할

split : 구분자를 기준으로 문자열을 분할합니다. 하나의 문자열이 여러 개의 부분 문자열로 쪼개져 리스트에 저장이 됩니다. 이 리스트로 개별 문자열을 하나씩 빼서 사용할 수 있게 됩니다. 즉 간단하게 행렬을 만든다고 보시면 될 것 같네요.

split

a="서울 부산 제주"

print(a.split())

b="서울, 부산, 제주"

print(b.split(','))

result

['서울', '부산', '제주']
['서울', ' 부산', ' 제주']

splitlines : 개행 문자나 파일 구분자 그리고 그룹 구분자 등을 기준으로 문자열을 잘라 리스트로 만듭니다. 주로 개행 코드를 기준으로 항 행씩 잘라내며 긴 문서를 각 행별로 쪼개 관리할 때 편리합니다. 

splitlines

sen=""" A life without love, \n without the presence of the beloved, \n is nothing but a mere magic-lantern show. \n We draw out slide, swiftly tiring of each, \n and pushing it back to make haste for the next"""

goo=sen.splitlines()

print(goo[1])

result

 without the presence of the beloved,

 

 

join : 문자열의 각 문자 사이에 다른 문자열을 끼워 넣습니다.

join

a=" 짝짝짝 "

print(a.join('대한민국'))

result

대 짝짝짝 한 짝짝짝 민 짝짝짝 국

 

splitjoin : 분할 후 각각에 삽입하는 것입니다.

splitjoin

a="서울->대전->대구->부산"

city=a.split("->")

print(" 찍고 ".join(city))

result

서울 찍고 대전 찍고 대구 찍고 부산

 

→ 대체

replace : 특정 문자열을 찾아서 다른 문자열로 바꿔주는 것을 말합니다. 

replace("특정 문자열","바꿀 문자열")

 

just : 문자열의 특정 폭에 맞추어 정렬을 할 수 있습니다. 정렬의 종류에 따라 좌정렬(ljust), 우정렬(rjust), 중심정렬(center)로 표현합니다. 

just

sen="Oh!, for crying out loud"

print(sen.ljust(50)) # 왼쪽 정렬

print(sen.rjust(50)) # 우측 정렬

print(sen.center(50)) # 중심 정렬

result

Oh!, for crying out loud
                          Oh!, for crying out loud
             Oh!, for crying out loud

 

'컴퓨터 프로그래밍 > python' 카테고리의 다른 글

Python 리스트(list) & 튜플(tuple)  (0) 2020.08.12
Python 포맷팅(Format)  (0) 2020.08.12
python 산술(Arithmetic)  (0) 2020.08.12
Python 함수(function)  (0) 2020.08.11
Python 반복문(Loop)  (0) 2020.08.11

댓글