본문 바로가기

프로그래밍/Python

[Python 기초] 문자열 자료형 (String)

반응형

String 타입에 대해서 알아보도록 하겠습니다.

파이썬의 문자열을 대부분 ""이나 '' 로 감싸져 있습니다.

 

어? 왜 이렇게 복잡하게 했지?

라고 의심하실 수도 있지만, 다 이유가 있습니다. 왜냐하면, "It's New"라는 말을 출력하고 싶을 때에 '는 문자열로 나타내고 싶다면 ( " ) 큰따옴표 내부에 ( ' ) 작은 따음표를 사용하면 됩니다.

 

 

문자열 사용하기

>>> a = "apple"
>>> a
'apple'
>>> a = 'apple'
>>> a
'apple'

 

문자열 내에 ' (작은따옴표) 추가하는 방법

>>> n = "it's new"
>>> n
"it's new"
>>> print(n)
it's new
>>> n = 'it\'s new'
>>> print(n)

[이스케이프 코드란?]

문자열 예제에서 여러 줄의 문장을 처리할 때 백슬래시 문자와 소문자 n을 조합한 \n 이스케이프 코드를 사용했다. 이스케이프 코드란 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 "문자 조합"이다. 주로 출력물을 보기 좋게 정렬하는 용도로 사용한다. 몇 가지 이스케이프 코드를 정리하면 다음과 같다.

코드설명

\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\\ 문자 \를 그대로 표현할 때 사용
\' 작은따옴표(')를 그대로 표현할 때 사용
\" 큰따옴표(")를 그대로 표현할 때 사용
\r 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)
\f 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동)
\a 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 난다)
\b 백 스페이스
\000 널 문자

이중에서 활용빈도가 높은 것은 \n, \t, \\, \', \"이다. 나머지는 프로그램에서 잘 사용하지 않는다.

>>> 점프투파이썬 에서

 

문자열에 멀티 라인을 사용할 때에는 

다음과 같이하면 됩니다.

>>> multiline='''
... Life is too short
... You need python
... '''

 

문자열은 문자열끼리 더하기고 가능합니다.

>>> a = 'apple'
>>> p = 'pen'
>>> a + p
'applepen'

 

마찬가지로 곱하기도 가능하지요

>>> a * 50
'appleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleappleapple'
>>> a * p
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'

하지만, 문자열과 곱하기는 숫자만 가능합니다.

 

 

문자열 길이 구하기

 

문자열의 길이를 알고 싶을때에 내장되어 있는 len 이라는 함수를 사용할 수도 있습니다

 

>>> a = 'apple'
>>> len(a)
5

 

문자열 슬라이싱

문자열을 뽑아서 하는 방법

>>> a = "Life is too short, You need Python"
>>> b = a[0] + a[1] + a[2] + a[3]
>>> b
'Life'

혹은 아래와 같이 [시작 : 끝] 으로 문자열을 슬라이싱 할 수도 있습니다.

그리고 : 앞뒤로 아무것도 붙이지 않는다면 "~끝" 또는 "처음~" 라는 의미입니다.

>>> a = "Life is too short, You need Python"
>>> a[0:4]
'Life'

>>> a[19:]
'You need Python'

 

 

 

문자열 포매팅

 

우리가 문자를 출력하는 프로그램을 작성할 때, 예를들어

"현재 습도는 75%입니다."를 출력했는데

10분 뒤에 다시 출력을 하게 된다면

습도는 계속 적으로 변하는 변수입니다. 이럴때 사용하는 것이 문자열 포매팅인데요

 

간단히 살펴 보면

>>> "I eat %d apples" %3
'I eat 3 apples'

%d는 숫자를 넣을 곳을 말하고 %s는 문자를 나타낼때 입니다.

>>> "This is %s" %'minsu'
'This is minsu'

또한

%뒤에 변수가 올 수도 있습니다.

>>> num = 3
>>> "i ate %d apples" %num
'i ate 3 apples'

만약 2개가 있다면 아래와 같이 할 수도 있습니다.

>>> "어제 %s가 우리집에 찾아왔었는데, %d원을 주고 갔습니다." %('민수', 500)
'어제 민수가 우리집에 찾아왔었는데, 500원을 주고 갔습니다.'

 

숫자와 함께 포매팅 사용하기

>>> "공 %10s 백" %'hi'
'공         hi 백'
>>> "Pi는 %0.4f" % 3.147292
'Pi는 3.1473'

 

>>> "I eat {0} apples".format("five")
'I eat five apples'
>>> "{0}와 {1}는 앞으로 어떻게 될까요?".format('철수', '영희')
'철수와 영희는 앞으로 어떻게 될까요?'

 

>>> "{name}의 나이는 {age}살 입니다.".format(name='철수', age=10)
'철수의 나이는 10살 입니다.'

 

 

 

문자열 관련 함수

>>> a = "apple"
>>> a.count('p')
2
>>> a = "apple"
>>> a.find('p')
1
>>> a.find('a')
0
>>> a.find('t')
-1

위치를 알려주는 건 find와 index가 있는데 

index의 경우 반환하는 값이 없다면 Error를 나타낸다

 

>>> a.index('a')
0
>>> a.index('p')
1
>>> a.index('l')
3
>>> a.index('t')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
>>>

 

 

반응형