안녕하세요 주니입니다.
문자열에 특수한 기능을 하는 문자들이 있습니다.
특수한 기능을 하는 문자들을 이스케이프 시퀀스 문자라고 합니다.
자주 사용하는 몇 가지 알아보겠습니다.
문자열 이스케이프 시퀀스
이스케이프 시퀀스 문자는 고유의 의미를 벗어난 특별한 기능을 가진 문자입니다.
예를 들어 보겠습니다.
'n'이라는 문자는 소문자 알파뱃 n 이 고유의 의미입니다.
하지만 n을 이스케이프 시퀀스로 표현 하면 '\n'이 됩니다.
본래 의미인 알파뱃 소문자 'n'의 의미를 벗어나 개행 의미를 가집니다.
문자 앞에 backslash('\') 문자를 포함하면 이스케이프 시퀀스가 됩니다.
실제 문자열의 원본 데이터가 변경되는 것이 아닙니다.
콘솔 화면에서 문자열 출력이 다를 뿐, 원본 데이터는 그대로입니다.
예를 들어,
만약 'aaa\rbbb' 라고 문자열을 만들고 출력 하면,
'bbb' 가 출력 되지만 실제 문자열이 'bbb' 로 변한것이 아닙니다.
캐리지 리턴
캐리지 리턴은 '\r' 로 표현됩니다.
캐리지 리턴을 하면, 콘솔 화면의 커서의 위치를 맨 앞으로 보내게 됩니다.
예를 들어 보겠습니다.
str1 = 'aaabbb'str2 = 'aaa\rbbb'print(str1)print(str2)
str1 에는 이스케이프 문자가 없는 'aaabbb'를 선언하여 할당 했습니다.
str2에는 캐리지 리턴이 포함된 'aaa\rbbb' 를 선언하여 할당을 했습니다.
각 문자열을 print 함수를 이용해서 출력을 합니다.
캐리지 리턴이 포함된 문자는 'bbb'가 출력됩니다.
먼저, 콘솔 화면에 'aaa' 까지 출력합니다.
캐리지 리턴 문자를 만나면, 커서 위치를 맨 앞으로 보냅니다.
그리고 다시 'bbb'를 콘솔 화면에 출력을 합니다.
결과적으로, 'aaa' 문자를 덮어버리게 됩니다.
백스페이스
백스페이스 문자는 '\b' 로 표현됩니다.
백스페이스를 하게 되면,
우리가 흔히 알고 있듯이 한 문자를 지우게 됩니다.
한 문자를 지운다는 것은 커서 또한 한 칸 뒤로 이동하게 된다는 뜻입니다.
예제를 통해 확인하겠습니다.
str1 = 'aaabbb'str2 = 'aaa\bbbb'print(str1)print(str2)
str1 에는 'aaabbb' 를 선언하여 할당 했습니다.
str2에 백스페이스 이스케이프 시퀀스를 포함한 'aaa\bbbb'를 선언하여 할당했습니다.
그리고 print 함수를 통해 출력합니다.
결과를 확인해보겠습니다.
str2에 대한 출력을 보면 '\b' 이스케이프 시퀀스에 의해서 'a' 문자가 한번 지워졌습니다.
'bbb' 가 출력됐습니다.
탭
탭 문자는 '\t' 입니다.
탭 이스케이프 시퀀스는 탭을 하나 추가하게 됩니다.
탭은 프로그래밍에서 일반적으로 공백 네 칸을 사용을 하고 있습니다.
확인을 해보겠습니다.
str1 = 'aaa\tbbb'print(str1)
str1에 'aaa' 와 'bbb' 사이에 '\t' 를 넣은 문자열을 선언하여 출력합니다.
Quotes
single quotes 와 double quotes는 문자열의 delimiter로 사용이 됩니다.
문자열 내에서 quotes를 사용하려고 하면 오류가 발생합니다.
이스케이프 시퀀스를 이용하면 quotes를 문자열 내에서 사용을 할 수 있습니다.
확인 해보겠습니다.
single = 'hello \'python\''double = "hello \"python\""print(single)print(double)
single 변수에 \' 를 사용한 문자열을 할당합니다.
double 변수에 \" 를 사용한 문자열을 각각 할당하고 출력합니다.
double 변수에 \" 를 사용한 문자열을 각각 할당하고 출력합니다.
개행
new line 은 말 그대로 개행 문자입니다.
'\n' 으로 표현합니다.
바로 예제를 통해 확인해보겠습니다.
newline = 'hello \npython'print(newline)
newline 이란 변수에 '\n' 이 포함된 문자열을 선언하여 할당하고 출력합니다.
raw string
이스케이프 시퀀스 기능이 아닌 이스케이프 시퀀스 문자를 출력 할 수 있습니다.
문자열 앞에 r 또는 R 을 추가하면 됩니다.
예제로 확인해보겠습니다.
raw1 = r'hello \npython'raw2 = R'hello \tpython'print(raw1)print(raw2)
raw1 에는 r 문자를 이용하여 개행 이스케이프 시퀀스가 있는 문자열을 할당했습니다.
raw2 에는 R 문자를 이용하여 탭 이스케이프 시퀀스가 포함된 문자열을 선언했습니다.
\n 은 개행이 안되고 그대로 출력됐습니다.
\t 도 탭 문자가 포함 안되고 출력됐습니다.
파이썬 문자열 이스케이프시퀀스란?
Reviewed by Juny
on
7월 08, 2019
Rating:
댓글 없음: