파이썬 문자열 로우 표현법(Raw string notation in Python)
Programming

파이썬 문자열 로우 표현법(Raw string notation in Python)

일시불

SWEA를 듣다가 처음 보는 표현을 들어서 정리해 보려고 한다.

pythonrawstring

로우 표현법이 대체 뭐지? 옆에 영어로 병기를 해주던가.. 왜 저렇게 썼는지 이해는 되는데 초심자 입장에서는 굉장히 난해한 표현이다. 문제는 그냥 저렇게 띡 "로우표현법"이라고 던지고 다음 챕터로 넘어가는 것 ㅠㅠ

파이썬에서 Raw String(로우 표현법)

String prefix r, R

사실 이건 로우 표현법이라는 말 자체가 잘못된 것 같다. 적절한 한국어 이름이 생각나지 않는데 그냥 Raw String이라고 하겠다. 파이썬에서 Raw String이라고 하면 보통 다음 방법을 말한다.

raw_string = r'Hi\nHello'
print(raw_string)

실행결과

Hi\nHello

만일 그냥 raw_s = 'Hi\nHello'라고 했다면 \n이 Escape Character이기 때문에 줄바꿈이 일어난다.

raw_string = 'Hi\nHello'
print(raw_string)

실행결과

Hi
Hello

하지만 r을 string 앞에 붙여주어 이게 Raw string임을 표시했기 때문에 '안의 내용이 그대로(Raw) 출력되는 것을 알 수 있다.

위 방법처럼 Raw string을 사용하려면 string 앞에 r또는 R을 붙여주면 된다.

String Literals

그런데 Raw sting을 사용할때 문자 그대로 출력할 수 없는 것이 있다. 바로 String Literal이다. 예를 들어 \'은 Quote을, \"은 Double quote을 나타낸다. 원래 String에서 quote mark를 나타내려면 이 표현법을 사용했다.

string = '\''
print(string)

실행결과

'

예상대로 '가 출력된다. 그런데 문제는 \를 출력하는 경우이다.

string =r'\'

실행결과

SyntaxError: EOL while scanning string literal

\' 때문에 개행이 되어버려 EOL 에러가 발생한다. 이러한 규칙에 따라 Python Docs에 있는 String Literal은 Raw string으로도 출력할 수 없다.