[Programming Language]/[Python]

[Python] :: 자료형 - 문자열(string), 이스케이프 문자, 문자열 연산자

Semincolon 2023. 3. 29. 12:15
◎ 문자열(string)

  문자열은 큰따옴표나 작은따옴표로 감싸서 만들 수 있다. 아래의 것들은 모두 문자열에 해당한다.

print("Hello Python!")
print('Hello Python!')

  보면 알다시피 큰따옴표로 시작한 문자열은 큰따옴표로 끝나야 하고 작은따옴표로 시작한 문자열은 작은따옴표로 끝나야 한다. 그렇다면 굳이 왜 큰따옴표와 작은따옴표를 구분지어 사용하는지 궁금할 수 있을 것이다. 그 이유는 문자열 안에 따옴표를 넣어야 하는 경우가 있기 때문이다. 아래의 코드를 살펴보자.

print(""Hello!"Python")

  코드 블럭에서도 보이듯 Hello!는 문자열로 인식되지 않고 있다. 본 코드의 작성 의도는 "Hello!"Python을 출력하는 것인데 큰따옴표의 범위 내에 Hello!가 들지 못하게 되는 것을 확인할 수 있다. 따라서 원래의 의도대로 출력을 하기 위해서는 아래처럼 큰따옴표와 작은따옴표를 혼합하여 사용해주어야 한다.

print('"Hello!"Python')

이스케이프 문자

  파이썬에서도 다른 프로그래밍 언어와 동일하게 이스케이프 문자가 존재한다. 그중 자주 사용되는 것들의 목록은 아래와 같다.

  • \\ : \ 문자 출력
  • \n : 줄 바꿈(개행)
  • \t : 수평 탭
  • \' : 작은따옴표 출력
  • \" : 큰따옴표 출력

  개행 문자(\n)를 사용하면 여러 줄의 문자열을 만들 수 있다. 그러나 파이썬에서는 개행 문자를 사용하지 않고서도 여러 줄의 문자열을 만들 수 있다. 큰따옴표 또는 작은따옴표를 세번 사용하면 된다. 아래의 두 코드는 모두 동일한 출력 결과를 갖는다.

print("Hello!\nMy name is Semin!\nNice to meet you :)")
print("""Hello
My name is Semin!
Nice to meet you :)""")

  큰따옴표 또는 작은따옴표를 세번 연속으로 사용하는 경우에는 엔터를 누를 때마다 하나의 줄로 인식하기 때문에 아래의 코드는 다음과 같은 출력 결과를 갖는다.

print("""
Hello!
My name is Semin!
Nice to meet you :)
""")

출력 결과를 보면 위와 아래에 의미 없는 공백 줄이 하나씩 있는 것을 볼 수 있다.

  이를 해결하려면 위 코드를 아래처럼 수정하면 된다.

print("""\
Hello!
My name is Semin!
Nice to meet you :)\
""")

위 아래로 존재했던 공백 줄이 사라졌다.


◎ 문자열 연산자

  1) 문자열 연결 연산자 : +

  숫자에서의 + 기호는 더하기를 의미하지만 문자열에서의 + 기호는 문자열을 합치는 것을 의미한다.

  다만 문자열과 숫자를 합치는 것은 불가하다. 다만 문자 자료형의 숫자를 합치는 것은 가능하다.

  2) 문자열 반복 연산자 : *

  숫자에서의 * 기호는 곱하기를 의미하지만 문자열에서의 * 기호는 문자열을 특정 수만큼 반복하여 출력하는 것을 의미한다.

  3) 문자 선택 연산자(Indexing) : [ ]

  이는 C언어에서 사용했던 배열과 같은 내용이다. C언어에서 배열의 인덱스는 1이 아닌 0부터 시작한다. 이를 제로 인덱스(zero index)라고 한다. 1로 시작하는 것은 원 인덱스(one index)라고 하는데 이중 파이썬은 제로 인덱스를 사용한다.

H E L L O
[0] [1] [2] [3] [4]

  인덱스는 0을 기준으로 음수의 인덱스도 가능하다.

H E L L O
[-5] [-4] [-3] [-2] [-1]

  4) 문자열 범위 선택 연산자(Slicing) : [:]

  이 연산자를 사용하면 문자열의 특정 범위를 선택하여 사용할 수 있다. 예를 들어 "Hello"[1:3]은 1, 2번 인덱스에 해당하는 문자를 출력하는데 이때 마지막 숫자인 3번 인덱스에 해당하는 문자는 출력되지 않음에 주의해야 한다(마지막 숫자를 포함하는 프로그래밍 언어도 존재하긴 함). 이를 응용하여 [1:]은 1번 인덱스부터 마지막 인덱스까지 출력하는 것이고 [:4]는 0번 인덱스부터 3번 인덱스까지 출력하는 것도 가능하다.

  ※ 가장 많이 접하는 예외 중의 하나인 IndexError(index out of range)

  앞에서 사용한 HELLO의 인덱스 범위는 0~4이다. 만약 이 범위를 초과한 인덱스를 사용하게 된다면 IndexError 예외가 발생하게 된다. 이는 프로그래밍을 하면서 자주 접하는 예외이므로 사용에 주의를 가해야 한다.