본문 바로가기
Development/Python

[Python] 파이썬 예제 - 데이터 형식 - 문자열 처리

by 푸민 2020. 9. 9.
반응형

안녕하세요 푸민입니다.

문자 데이터들의 집합을 문자열이라고 합니다. 파이썬에서 문자열을 제어하는 방법은 굉장히 다양합니다. 하나씩 알아보도록 할게요.


1. 문자열 생성

  • 큰따옴표("), 작은 따옴표('), 큰따옴표 세개("""), 작은따옴표 3개(''')를 사용하여 같은 것으로 양쪽을 둘러싸야 됩니다.
>>> name = "My name is Fumin."
>>> name = 'My name is Fumin.'
>>> name = """My name is Fumin."""
>>> name = '''My name is Fumin.'''

 

  • 문자열 내에 따옴표 포함할때는 다른 따옴표를 사용하거나 역슬래시(\)를 사용하여야합니다.
>>> hobby = "Fumin's favorite hobby is walking."
>>> hobby = 'Fumin\'s favorite hobby is walking.'
>>> tell = 'Fumin says, "Go!"'
>>> tell = "Fumin says, \"Go!\""

 

  • 줄바꿈, 탭 등 이스케이프 코드 사용
>>> introduce = "Hello!\nMy name is Fumin.\nNice to meet you."

>>> introduce = '''
Hello!
My name is Fumin.
Nice to meet you.
'''

>>> introduce = """
Hello!
My name is Fumin.
Nice to meet you.
"""

>>> print(introduce)
코드 설명
\n 문자열 줄바꿈
\t 문자열 탭 간격
문자 \입력
\' 작은 따옴표 입력
\" 큰따옴표 입력
\r 줄바꿈 커서 앞으로
\f 줄바꿈 커서를 다음줄로
\a 출력시 PC에서 삑 소리
\b 백 스페이스
\000 널 문자

2. 문자열 연산

  • 문자열 더하기 - (+)
>>> front = "This is"
>>> end = " sparta!"
>>> front + end
'This is sparta!'

두개의 문자를 합쳐서 반환합니다.

 

  • 문자열 곱하기 - (*)
>>> text = "Fumin"
>>> text * 2
'FuminFumin'

해당 문자를 특정 수만큼 합쳐서 반환합니다.

 

  • 문자열 길이 구하기 - ( len )
>>> text = "My name is Fumin."
>>> len(text)
17

문자열의 길이를 숫자로 반환합니다.


3. 문자열 특정 자리 문자 가져오기, 자르기

  • 문자열 특정 자리 문자 가져오기 - []

 

>>> text = "My name is Fumin."
>>> text[0]
'M'
>>> text[5]
'm'
>>> text[-6]
'F'

문자 변수뒤에 [] 괄호를 이용하여 자릿수를 입력하면 해당 자릿수에 해당하는 문자를 가져옵니다. 0부터 시작하며 - 부호를 사용할경우 뒤에서부터 카운트합니다.

 

  • 문자열 자르기 - [] 괄호 내에 범위 지정
>>> text = "My name is Fumin."
>>> name = text[11] + text[12] + text[13] + text[14] + text[15]
>>> name
'Fumin'
>>> name2 = text[11:15]
>>> name2
'Fumi'
>>> name3 = text[11:]
>>> name3
'Fumin.'
>>> name4 = text[:]
>>> name4
'My name is Fumin.'

[] 를 이용하여 범위를 지정할수 있습니다. 특정 자릿수를 입력하여 특정 문자를 가져와서 합칠수도 있고, 클론 (:)을 이용하여 범위를 지정할 수도 있습니다. 클론 기준으로 앞의 숫자는 시작 위치(공백이면 0), 뒤의 숫자는 끝위치 바로 뒤(공백이면 문자열 길이)입니다. name2에서 본것 같이 [11:15] 로 범위를 지정한 경우 11번째부터 14번째까지만 가져옵니다.


4. 문자열 포맷팅

문자열 포맷팅이랑 특정 숫자나 문자들을 하나의 문자열로 합치고 변형하는 것입니다. 다양한 데이터들을 원하는 형태로 출력을 할 수 있습니다.

  • 문자열 포맷팅 - (%)
>>> "My age is %d." % 32
'My age is 32.'
>>> "My name is %s." % 'Fumin'
'My name is Fumin.'
>>> age = 32
>>> name = 'Fumin'
>>> "My name is %s. My age is %s." % (name, age)
'My name is Fumin. My age is 32.'

%를 이용하여 어떤 데이터를 넣을수 있는지 결정할 수 있습니다. 여러가지 변수 또는 데이터를 합칠수도 있습니다. 또한 %s 의 경우 문자 이외의 모든 데이터 형태를 사용할 수 있습니다. 합칠때 데이터 형태를 문자로 변형하기 때문입니다.

코드 설명
%s 문자열(또는 모든 형태)
%c 문자 1개
%d 정수
%f 부동소수
%o 8진수
%x 16진수
%% '%' 문자 자체

 

  • 문자 및 소수 자릿수 지정
>>> "%20s" % "My name is Fumin."
'   My name is Fumin.'
>>> "%-20s" % "My name is Fumin."
'My name is Fumin.   '
>>> "%0.5f" % 0.123456789
'0.12346'
>>> "%10.5f" % 0.123456789
'   0.12346'

%s 사이에 숫자를 입력하면 해당 길이의 문자열을 만듭니다. - 부호를 같이 입력하면 왼쪽 정렬 후 공백을, 부호 없이 하면 오른쪽 정렬 후 앞쪽은 공백으로 채워집니다.

소수의 경우 %f 사이에 (숫자).(숫자)를 입력할 수 있고 앞의 수는 위와 같은 자릿수이고, 뒤의 수는 반올림 기준입니다.

 

  • format 함수 사용
>>> "My name is {0}. My age is {1}.".format('Fumin', 32)
'My name is Fumin. My age is 32.'
>>> "My name is {name}. My age is {age}.".format(name = 'Fumin', age = 32)
'My name is Fumin. My age is 32.'
>>> "{0:<10}".format("Fumin")
'Fumin     '
>>> "{0:.>10}".format("Fumin")
'.....Fumin'
>>> "{0:^10.5f}".format(0.123456789)
' 0.12346  '

format 함수를 사용하면 {} 괄호에 데이터 순서를 넣어도 되고, 특정 파라미터 명을 지정할 경우 해당 명의 값이 반환됩니다. 또한 소수와 자릿수, 정렬도 사용이 가능합니다.

  • f 문자열 포맷팅
>>> name = 'Fumin'
>>> age = 32
>>> f'My name is {name}. My age id {age}.'
'My name is Fumin. My age id 32.'
>>> f'{"Fumin":<10}'
'Fumin     '
>>> f'{"Fumin":.^10}'
'..Fumin...'
>>> number = 0.123456789
>>> f'{number:10.5f}'
'   0.12346'

5. 기타 문자열 함수

  • 문자 갯수 세기
>>> text = "My name is Fumin."
>>> text.count('n')
2

해당 문자의 갯수를 반환한다.

 

  • 위치 찾기
>>> text = "My name is Fumin."
>>> text.find('n')
3
>>> text.find('f')
-1
>>> text.index('n')
3
>>> text.index('f')
Traceback (most recent call last):
  File "<pyshell#47>", line 1, in <module>
    text.index('f')
ValueError: substring not found

find의 경우 없으면 -1을 index의 경우 없으면 에러를 반환한다.

 

  • 문자열 삽입하기
>>> ".".join('Fumin')
'F.u.m.i.n'

문자 사이에 . 을 삽입합니다.

 

  • 문자열 대문자, 소문자로 변환
>>> name = 'Fumin'
>>> name.upper()
'FUMIN'
>>> name.lower()
'fumin'

 

  • 공백 지우기
>>> name = '    Fumin    '
>>> name.lstrip()
'Fumin    '
>>> name.rstrip()
'    Fumin'
>>> name.strip()
'Fumin'

lstrip()은 좌측 공백 제거, rstrip()은 우측 공백 제거, strip()은 앞뒤 공백 제거합니다.

 

  • 문자열 나누기
>>> text= 'My name is Fumin'
>>> text.split()
['My', 'name', 'is', 'Fumin']
>>> text.split('n')
['My ', 'ame is Fumi', '']
>>> 

split()  함수로 나누기가 가능하고, 공백이면 ' ' 띄어쓰기 기준으로 나눕니다. 특정 문자를 입력할 경우 해당 문자로 나눕니다.

반응형

댓글