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
가 발생한 것임을 알아챘다.
그래서 \\
로 변경하려고 했는데... 너무 귀찮았다. 더 쉬운 방법은 없을까?
검색을 해보니 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
\
를 문자 그대로 사용되는 것을 확인할 수 있다.
그런데 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 이다!