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

김나연·2021년 7월 27일
0

Python

목록 보기
2/18
post-thumbnail

문자열

문자열(String)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다. 문자열을 아래와 같이 예를 들 수 있다.

"Life is too short, You need Python"
"1234"

위의 예시를 보면 문자열은 큰 따옴표로 둘러싸여 있는데, 여기서 "1234" 는 숫자인데 왜 문자열인지 의문이 들 수 있다. 하지만 따옴표로 둘러싸여 있다면 모두 문자열이라고 한다.

문자열 만들고 사용하기

1. 큰따옴표(")로 둘러싸기

"Hello World"

2. 작은따옴표(')로 둘러싸기

'Hello World'

3. 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기

"""Hello World"""

4. 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기

'''Hello World'''

문자열에 따옴표 포함시키기

문자열에 따옴표를 포함하고 싶다면

"Python's apple"
'"Python is very easy." he says.'

위와 같이 작은따옴표가 포함된 문장이라면 큰따옴표로 문자열을 둘러싸면 되고, 큰따옴표가 포함된 문장이라면 작은따옴표로 둘러싸면 된다.

또한, 다음과 같이 표현할 수 있다.

'Python\'s favorite food is apple'
"\"Python is very easy.\" he says."

백슬래시()를 사용하여 작은따옴표나 큰따옴표 앞에 삽입하면 백슬래시 뒤의 작은 따옴표나 큰따옴표는 문자열을 둘러싸는 기호의 의미가 아니라 문자 그 자체를 뜻하므로 문자열에 포함된다.

문자열 연산하기

문자열 더하기

head = "Python"
tail = "is fun"
head + tail

다음과 같이 세 번째 줄의 head + tail 을 더하게 되면 변수 head의 "Python"과 변수 tail의 "is fun"이 합쳐져서 'Python is fun' 이라는 결과가 나온다.

문자열 곱하기

a = "Python"
a * 2

문자열에서는 곱셈은 위 코드에서 a에 2를 곱하는 것이 아닌 a를 2번 반복하라는 의미가 된다. 따라서 위의 예시의 결과는 'PythonPython' 이 된다.

문자열 인덱싱

인덱싱(Indexing)이란 무언가를 가리킨다는 의미이다.

a = 'Life is too short, You need Python'
a[2]

다음 문자열에서 a[2]라고 하면 a라는 문자열에서 두 번째 문자를 말한다. 파이썬은 0부터 숫자를 세기 때문에 다음 문자열에서 두 번째 문자는 i가 아닌 f가 된다.

a[번호] 는 문자열 안의 특정한 값을 뽑아내는 역할을 한다. 이러한 작업을 인덱싱이라고 한다.

문자열 슬라이싱

슬라이싱(Slicing)이란 무언가를 잘라낸다는 의미이다.

a = 'Life is too short, You need Python'
b = a[0] + a[1] + a[2] + a[3]
print(b)

위와 같이 간단한 방법으로 접근하여 "Life"를 출력할 수 있지만

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

이렇게 슬라이싱 기법으로 'Life'를 간단하게 처리할 수 있다.
a[0:4] 가 의미하는 것은 a 문자열 문장에서 자리 번호 0부터 4까지 문자를 뽑아내는 것이다.

a[시작번호:끝번호] 이지만 끝번호에 해당하는 것은 포함하지 않기 때문에 a[0:3] 으로 하면 'Lif'까지만 출력이 된다.

문자열 포매팅

문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것이 바로 문자열 포매팅이다. 쉽게 말해, 문자열 안에 어떤 값을 삽입하는 것이다.

"I eat %d apples." %3

다음 예제는 문자열 안에 정수 3을 삽입하는 방법을 보여준다. 문자열 안에서 숫자를 넣고 싶은 자리에 %d 문자를 넣어주고 삽입할 숫자는 % 문자 다음에 넣는다. 여기서 %d는 문자열 포맷 코드라고 한다.

문자열 포맷 코드로는 다음과 같은 것이 있다.

"Downloading is %d%%" %98

위 처럼 문자열 안에 %를 넣고 싶다면 %%로 반드시 사용해야한다.

format 함수를 사용한 포매팅

- 숫자 바로 대입하기

"I eat {0} apples" .format(3)

"I eat 3 apples" {0}부분이 숫자 3으로 바뀌었다.

- 문자열 바로 대입하기

"I eat {0} apples" .format("five")

"I eat five apples" 가 출력되고 {0} 부분이 문자열 five로 바뀌었다.

문자열 관련 함수들

1. 문자 개수 세기(count)

a = "hobby"
a.count('b')

위의 결과는 2가 된다. a 문자열에서 b의 개수를 돌려주기 때문이다.

2. 위치 알려주기(find)

a = "Python is fun"
a.find('f')

문자열 중 문자 f가 있는 위치를 반환한다. 즉, f의 위치인 10이 반환된다.
찾는 값이 문자열에 없다면 -1이 반환된다.

3. 위치 알려주기(index)

find와 마찬가지로 a.index('f') 하면 f가 처음 나온 위치를 반환해준다. find함수와 다른 점은 문자열에 해당 문자가 없다면 오류가 발생한다는 것이다.

4. 문자열 삽입(join)

",".join('abcd')

join함수는 문자열 뿐 아니라 리스트나 튜플도 입력으로 사용할 수 있다. 다음 예의 결과로 abcd 문자열의 각각의 문자 사이에 ,을 삽입한 'a,b,c,d' 가 출력된다.

5. 소문자를 대문자로 바꾸기(upper)

a = 'hi'
a.upper()

'HI' 를 반환한다. 만약 문자열이 이미 대문자라면 아무 변화도 일어나지 않는다.

6. 대문자를 소문자로 만들기 (lower)

upper과 마찬가지로 a.lower() 을 사용하면 대문자인 문자열을 소문자로 반환한다.

7. 문자열 나누가(split)

a = "Life is too short"
a.split()

a.split()처럼 괄호 안에 아무것도 넣지 않으면 공백을 기준으로 문자열은 나누어 준다. 위의 예시의 결과로 ['Life', 'is', 'too', 'short'] 를 반환한다.

profile
결국 무엇이든 해내는 사람 '김나연'입니다. 😎

0개의 댓글