소개
파이썬에서는 문자열 리터럴 앞에 r
또는 R
을 붙여서 원시 문자열(raw string)을 생성할 수 있습니다. 파이썬의 원시 문자열은 역슬래시 문자(\)를 리터럴 문자로 취급합니다. 원시 문자열은 역슬래시를 포함해야 하는 경우에 유용하며, 예를 들어 정규 표현식이나 윈도우 디렉토리 경로와 같은 경우가 있습니다. 여기서 역슬래시를 이스케이프 문자로 처리하고 싶지 않을 때 사용됩니다. 이 문서에서는 파이썬의 원시 문자열이 작동하는 기본 사항을 다루고, 문자열에 특수 문자를 포함하기 위해 원시 문자열을 사용하는 몇 가지 일반적인 예제를 제공합니다.
이 문서의 예제는 다양한 원시 문자열 시나리오를 보여주기 위해 명령줄에서 파이썬 대화형 콘솔을 사용합니다.
원시 문자열을 사용하여 문자열에 새 줄 문자 포함하기
다음 예제는 값이 Hi\nHello
인 문자열을 사용합니다. 이 값을 일반 문자열에 할당하려고 하면 줄바꿈 문자 (\n
)가 새 줄을 만듭니다:
- s = 'Hi\nHello'
문자열을 출력합니다:
- print(s)
출력 결과는 다음과 같습니다:
Hi
Hello
결과에서 보듯이 줄바꿈 문자는 새로운 줄을 만듭니다.
한 줄 바꿈 문자를 문자열에 포함하려면 문자열 변수에 r
또는 R
을 접두사로 붙여서 원시 문자열을 만듭니다:
- raw_s = r'Hi\nHello'
문자열을 출력합니다:
- print(raw_s)
출력은 다음과 같습니다:
Hi\nHello
출력에는 줄 바꿈 문자가 포함되어 있습니다.
원시 문자열을 사용하여 문자열에 이중 백슬래시 문자 포함
호스트 이름 경로와 같은 이중 백슬래시 문자를 문자열에 포함하려고 시도하면 일반 문자열에서 첫 번째 백슬래시 문자가 인쇄되지 않습니다. 이는 컴파일러가 첫 번째 백슬래시 문자를 이스케이프 표시로 간주하기 때문입니다.
예를 들어 경로를 포함하는 문자열을 만듭니다:
- s = '\\examplehost\digitalocean\content\'
문자열을 출력합니다:
- print(s)
출력은 다음과 같습니다:
\examplehost\digitalocean\content\
출력에서 첫 번째 백슬래시 문자가 문자열에 포함되지 않았음을 보여줍니다.
문자열에 양쪽 백슬래시 문자를 모두 포함하려면 문자열 변수에 r
또는 R
을 접두사로 붙여서 원시 문자열을 만듭니다:
- s = r'\\examplehost\digitalocean\content\'
문자열을 출력합니다:
- print(s)
출력은 다음과 같습니다:
\\examplehost\digitalocean\content\
출력에는 양쪽 백슬래시 문자가 모두 포함되어 있습니다.
원시 문자열에서 따옴표와 백슬래시 문자 해결
원시 문자열에서는 따옴표를 여전히 단일 백슬래시 문자로 이스케이프할 수 있지만, 백슬래시 문자는 결과 원시 문자열에 그대로 남아 있습니다.
또한, 원시 문자열은 홀수 개의 백슬래시 문자로 끝날 수 없습니다. 이 기능으로 인해 단일 백슬래시 문자를 포함하는 원시 문자열을 만들 수 없으므로 r"/"
은(는) 잘못된 문자열입니다.
잘못된 원시 문자열 예시
이 예에서 백슬래시 문자로 이스케이프되어 있기 때문에 끝 따옴표가 누락되어 출력됩니다. 이로 인해 unterminated string literal
오류가 발생합니다:
r'\'
이 예에서 첫 번째 두 백슬래시는 서로를 이스케이프하고, 세 번째 백슬래시는 끝 따옴표를 이스케이프하려고 시도하므로 unterminated string literal
오류가 발생합니다:
r'ab\\\'
유효한 원시 문자열 예시
여기 몇 가지 유효한 원시 문자열 예제가 있습니다. 따옴표와 백슬래시 문자를 포함합니다.
따옴표를 이스케이프하는 원시 문자열을 만듭니다:
- s = r"\"\""
문자열을 출력합니다:
- print(s)
결과는 다음과 같습니다:
\"\"
결과는 백슬래시 문자가 따옴표를 이스케이프하여 문자열이 종료되지 않지만, 백슬래시 문자는 결과 문자열에 남아 있는 것을 보여줍니다.
짝수 개의 백슬래시 문자를 포함하는 원시 문자열을 만듭니다:
- s = R'ab\\'
문자열을 출력합니다:
- print(s)
결과는 다음과 같습니다:
ab\\
결과는 짝수 개의 백슬래시 문자가 결과 문자열에 포함되어 있는 것을 보여줍니다.
결론
이 기사에서는 파이썬의 원시 문자열 기본을 배웠습니다. 계속해서 파이썬 문자열에 대해 학습하세요.
Source:
https://www.digitalocean.com/community/tutorials/python-raw-string