파이썬 코드 중에 긴 문자열 변수를 정의해야 할 때가 있습니다.
저는 최근에 크롤링 공부를 하다 보니 GET 방식으로 서버에 요청할 URL을 조합해야 할 때 많이 필요했습니다. 예를 들어 아래와 같은 URL이 있습니다.
https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&catId=50000151&pagingIndex=1&pagingSize=10&productSet=overseas&query&sort=rel×tamp=&viewType=list
변수로 정의하면 이런 모양이 되겠죠.
url = "https://search.shopping.naver.com/search/category?frm=NVSHOVS&origQuery&catId=50000151&pagingIndex=1&pagingSize=100&productSet=overseas&query&sort=rel×tamp=&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×tamp=&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×tamp=&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(리스트보기)
따옴표(" ")로 묶여있는 여러 문자열들을 괄호( ( ) )로 묶어주면 문자열을 이어 붙이는 효과가 생깁니다.
이렇게 사용하면 주석도 편하게 사용할 수 있고 보기에도 아주 깔끔하네요.
끝!
'Software > Python' 카테고리의 다른 글
pyinstaller 에러 virtualenv로 해결하기 (Python 3.8.10 버전은 피하세요) (0) | 2021.07.06 |
---|---|
Python Virtual Environment(Virtualenv) 사용하기 (0) | 2021.06.29 |
파이썬에서 날짜 관련 요긴한 정보 - datetime (0) | 2021.06.12 |
파이썬으로 라인 메신저에 알림(메시지) 보내기 - Python to LINE Notify (4) | 2021.06.05 |
댓글