[Python] raw string?

식빵·2022년 12월 30일
1

python

목록 보기
1/2
post-custom-banner

😅 문제 발생

python 기초를 가볍게 알아보고 활용해보고 있는데, 이상한 현상이 일어났다.
아래처럼 코드를 돌려봤다.

shp_path_two_points = 'C:\study\qgis_and_analysis_python\temp\two_points_5186.shp'
shp_path_triangle = "C:\study\qgis_and_analysis_python\temp\triangle_5186.shp"
print(shp_path_two_points)
print(shp_path_triangle)

이러고 출력을 해보니...

C:\study\qgis_and_analysis_python	emp	wo_points_5186.shp
C:\study\qgis_and_analysis_python	emp	riangle_5186.shp

🙄? 뭐야 저 공백은...?


처음에는 당황했지만, 자세히 보니 \ 에 의한 escape 가 발생한 것임을 알아챘다.
그래서 \\ 로 변경하려고 했는데... 너무 귀찮았다. 더 쉬운 방법은 없을까?



👏 raw string

검색을 해보니 python 에는 raw string 이라는 것이 있다.
일반적인 string 과 달리 raw string\escape 용도로 쓰는 것이 아닌
\ 를 문자 그대로 받아들이는 string 을 의미한다.

더 알아보니 위에 작성한 것처럼 단순한 게 아니더군요 😥
왜 그런지 궁금하다면 맨 아래 목차인 'raw string 에 대한 착각' 을 읽어보시길!


raw string 사용법은 아래와 같다.

shp_path_two_points = r'C:\study\qgis_and_analysis_python\temp\two_points_5186.shp'
shp_path_triangle = r"C:\study\qgis_and_analysis_python\temp\triangle_5186.shp"
print(shp_path_two_points)
print(shp_path_triangle)

앞에 r 만 넣어주면 된다! 상당히 간단하다.
출력의 결과는 아래와 같다.


C:\study\qgis_and_analysis_python\temp\two_points_5186.shp
C:\study\qgis_and_analysis_python\temp\triangle_5186.shp

\ 를 문자 그대로 사용되는 것을 확인할 수 있다.




😥 ps) raw string 에 대한 착각

그런데 raw string 을 이리저리 사용해보고 있는데,
아래와 같은 코드를 돌려보면 에러가 났다.

s = r'\'
# SyntaxError: unterminated string literal !!!!

🙄??????????


내가 알기로는 raw string\ 를 문자 그대로 받아들이는 string 이라는 것이다.

뭔가 이상해서 더 자세히 알아보기로 했다.
열심히 구글링을 해보니 아래와 같은 글을 발견했다.

출처: https://www.quora.com/Why-cant-Pythons-raw-string-literals-end-with-a-single-backslash


그렇다.
raw string 은 사실 단순히 \ 만 생각하는게 아니라,
\바로 다음에 오는 문자 를 있는 그대로 문자열에 표현하는 것이다.


다시 말하자면 raw string 은!
\ 를 문자 그대로 받아들이는 string ... 이 아니라!
\ 와 그 다음에 오는 문자를 그대로 받아들이는 string 이다!

profile
백엔드를 계속 배우고 있는 개발자입니다 😊
post-custom-banner

0개의 댓글