본문 바로가기
Software/Python

파이썬에서 문자열을 여러줄로 표시하고 주석까지 달기 (Multiline string with comment)

by lovey25 2021. 6. 20.
반응형

파이썬 코드 중에 긴 문자열 변수를 정의해야 할 때가 있습니다.

저는 최근에 크롤링 공부를 하다 보니 GET 방식으로 서버에 요청할 URL을 조합해야 할 때 많이 필요했습니다. 예를 들어 아래와 같은 URL이 있습니다.

https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&catId=50000151&pagingIndex=1&pagingSize=10&productSet=overseas&query&sort=rel&timestamp=&viewType=list

변수로 정의하면 이런 모양이 되겠죠.

url = "https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&catId=50000151&pagingIndex=1&pagingSize=100&productSet=overseas&query&sort=rel&timestamp=&viewType=list"

이것도 너무 긴 문자열은 아니지만 상황에 따라서 2줄 혹은 3줄 정도 되는 길이이기 때문에 코드를 보기가 불편합니다.

파이썬에서는 이런 경우 "역슬래시(\)"를 이용해서 다음 줄과 이어 줄 수 있는데 파이썬은 줄 마지막에 "\"가 있으면 다음 줄과 한 줄로 인식하게 됩니다. 이걸 이용해서 이 코드는 이렇게 표현할 수 있습니다.

url = "https://search.shopping.naver.com/search/category?\
frm=NVSHOVS&\
origQuery&\
catId=50000151&\
pagingIndex=1&\
pagingSize=100&\
productSet=overseas&\
query&sort=rel&\
timestamp=&\
viewType=list"

그런데 모양이 영~. 다음 줄의 모든 문자를 연속으로 인식하기 때문에 들여 쓰기를 사용할 수 없습니다. 만약 함수나 클래스 안에 있는 변수라면 모양이 더 이상하겠죠. 그래서 이런 식으로 사용하시는 분은 아무도 안 계십니다. 그래서 각 줄의 문자들을 따옴표(" ")로 묵어서 문자열에 해당하는 범위를 표시해서 아래와 같이 표시하곤 합니다.

url = "https://search.shopping.naver.com/search/category?" \
       "frm=NVSHOVS&" \
       "origQuery&" \
       "catId=50000151&" \
       "pagingIndex=1&" \
       "pagingSize=100&" \
       "productSet=overseas&" \
       "query&sort=rel&" \
       "timestamp=&" \
       "viewType=list"

이제 보기가 조금 나아졌습니다. 하지만 여기에는 단점이 있습니다. 아래 계속 보시겠습니다.

만약에 문자열 중간에 catId라는 인자(4행)를 상황에 따라서 바꿔서 쓸 수 있도록 변수로 바꾸어 써야 하는 경우를 생각해 보겠습니다.

url = "https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&catId=" \
       + category \
       + "&pagingIndex=1&pagingSize=100&productSet=overseas&query&sort=rel&timestamp=&viewType=list"

위와 같이 "\"로 각 라인을 이어주고 category라는 변수를 중간에 두고 문자열을 합치는 방식으로 표현을 할 수 있습니다. 하지만 이경우 category라는 변수가 의미하는 바를 주석으로 남겨두고 싶은데 이런 형태의 표현에서는 주석을 달수가 없습니다. \는 각행의 마지막에 와야 하거든요.

그래서 아래와 같이 표현하기도 합니다. 하지만 이렇게 되면 모양이 또 영~ 맘에 들지 않습니다.

url = "https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&catId=" 
url += category        # categogy ID
url += "&pagingIndex=1&pagingSize=100&productSet=overseas&query&sort=rel&timestamp=&viewType=list"

이럴 경우 다음과 같은 방법으로 표기하면 완전히 해결됩니다. ^^

url = ("https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&" 
       "catId=" + category + "&"                # category ID
       "pagingIndex=1&"                         # 조회할 페이지번호
       "pagingSize=100&"                        # 페이지당 검색수
       "productSet=overseas&"                   # 해외직구
       "query&"                                 # query: 검색 키워드
       "sort=rel&"                              # sort=rel(네이버가격순)
       "timestamp=&"                            # 
       "viewType=list")                         # viewType=list(리스트보기)

따옴표(" ")로 묶여있는 여러 문자열들을 괄호( ( ) )로 묶어주면 문자열을 이어 붙이는 효과가 생깁니다.

이렇게 사용하면 주석도 편하게 사용할 수 있고 보기에도 아주 깔끔하네요.

 

끝!

반응형

댓글