본문 바로가기
CS/Python

[python/string] 문자열 앞 f, r 의 의미 - formatter string과 raw string

by Warehaus 2021. 11. 19.

 

python으로 작성 된 코드를 보다보면 string 앞에 r 또는 f 가 붙어있는 경우가 있다.

특수한 목적을 위해 사용하는 표현식인데, 우선 f 를 먼저 보자

 

Formatted string literals

본론부터 말하자면 string 앞 f 는  formatted string 리터럴 을 의미한다.

 

python 3.6 에서부터 사용되기 시작했으며 이전에는 .format 같은 방식으로 사용해 왔었다.

formatted string literals 는 아래 코드 예시처럼 사용 가능하다.

 

>>> a = 1
>>> b = 2
>>> fs = f"{a} is a, {b} is b"
>>> print(fs)
반응형

그러면 출력은 어떻게 나올까? 아래처럼 실제 값을 대입해서 보여준다.

참고삼아 예전에는 이런 방식으로 사용했다는 것만 알아두고 가자.

아무튼 이렇게 format 을 뒤에 써 가면서 하던 방식이  python3 로 바뀌면서 얼마나 편해졌는지 모른다.

이걸로 formatted string literal 에 대한 궁금증은 해소가 되었을 것 같다.

이제 r 의 의미를 알아보자.

 

 

Raw string

python에서 string 앞에 r 을 표기해 주는 것은 해당 string literal을 raw string 으로 만들어 주기 위함이다. 

예시를 보면 조금 이해하기 편할 것 같다.

 

>>> mystring = "hello\tworld\nI'm Kim"
>>> print(mystring)
hello	world
I'm Kim
>>> mystring_raw = r"hello\tworld\nI'm Kim"
>>> print(mystring_raw)
hello\tworld\nI'm Kim
반응형

출력이 차이가 난다는 것을 알 수 있을 것이다.

r이 없는 mystring의 경우, 개행이나 각종  Escape 문자를 출력하지 않는다.

개행문자는 개행이 되고, \t 은 tab처리된다.

 

그런데 raw string은 다르다.

모든 Escape 문자를 그대로 출력해 준다.

 

Raw string은 내 경험 상 regex를 이용해서 문자열을 찾아야 하는 경우 사용했던 것으로 기억한다.

tab이나 개행문자도 같이 찾아줘야했기 떄문이다.

 

그 외에도 여러 필요성이 있겠지만 ..

이번 포스팅은 string앞에 prefix로 사용되는 f 와 r 의 의미 정도만 정리하는 것으로 마무리 하려고 한다.