Python urlencode 목록 값: doseq=True와 반복 쿼리 키를 구분해 확인하기

노트북과 쿼리 문자열 모양의 리본 위에 Python urlencode 목록 값은 doseq로 확인이라는 제목

Python에서 쿼리 값으로 목록을 넣고 각 항목을 같은 키로 반복하려면 urlencode(..., doseq=True)를 확인하세요. 목록 객체를 한 문자열로 표현하는 것과 여러 개의 key=value 쌍을 만드는 것은 다릅니다.

두 개의 태그를 링크에 담는 작은 예시로 결과를 직접 비교해 보겠습니다. 예시 문자열에는 실제 계정 정보나 인증 값을 넣을 필요가 없습니다.

1. 두 태그로 결과부터 비교하기

Python 공식 문서는 값이 시퀀스일 때 doseq가 참이면 그 값마다 개별 키·값 쌍을 생성한다고 설명합니다. 아래 코드는 문자열 태그 두 개만 사용합니다.

from urllib.parse import urlencode

params = {"tag": ["museum", "family"]}
print(urlencode(params, doseq=True))
# tag=museum&tag=family

결과를 볼 때 “목록이 전달됐다”는 말만 확인하지 말고 같은 tag 키가 두 번 존재하는지 읽어 보세요. 이 예시는 URL에 요청을 보내지 않고 문자열만 만듭니다.

목록 값을 doseq=True로 인코딩하면 tag=museum과 tag=family라는 반복 키가 생성되는 예시 도표

2. 입력 형태와 서비스 요구를 분리하기

내가 원하는 표현확인할 입력확인할 출력
같은 키에 값 여러 개목록 값과 doseq=Truetag가 반복되는지
키·값 순서를 명시튜플 쌍의 시퀀스입력 순서가 유지되는지
한 값에 쉼표 포함쉼표를 포함한 문자열서버가 쉼표 구분을 요구하는지

공식 문서는 튜플 쌍 시퀀스를 사용할 때 쌍의 순서가 결과에 유지된다고 설명합니다. 다만 URL을 만들었다는 사실은 대상 서비스가 그 형식을 받아들인다는 뜻이 아닙니다. 반복 키, 쉼표 문자열, 대괄호 이름 등 무엇을 요구하는지는 그 서비스 문서에서 확인하세요.

가상의 검색 서비스 A는 tag 반복을 받을 수 있고 B는 category 하나만 받을 수 있습니다. A용 인코딩이 성공해도 B용 형식이 맞다고 결론내릴 수 없습니다. 출력 문자열 검사와 서비스 규격 확인을 별도 단계로 두세요.

3. 출력 검토 메모 네 칸

작업 메모를 키 이름 / 값 목록 / 의도한 반복 여부 / 서비스 문서 위치 네 칸으로 만들어 보세요. 코드 수정 전후의 결과 문자열을 나란히 두면 값이 빠졌는지 알아보기 쉽습니다.

빈 목록이나 빈 문자열은 서로 다른 입력입니다. “없음”을 전달할지 해당 키를 생략할지부터 정하고 작은 예시로 결과를 확인하세요. 여러 형식을 한꺼번에 바꾸면 어떤 변경이 결과를 만든 것인지 찾기 어려워집니다.

인코딩 옵션은 요청 형식의 일부입니다. 값의 유효성이나 접근 권한을 검증하는 기능으로 설명하지 마세요. 실제 서비스의 민감한 URL을 예시나 공개 로그에 붙여 넣는 대신 무해한 문자열로 동작을 재현할 수 있습니다.

4. 자주 묻는 질문

doseq를 켜면 모든 서비스에서 다중 선택이 되나요?

대상 서비스가 반복 키를 어떤 의미로 해석하는지 별도로 확인해야 합니다. 문자열 생성 결과만으로 서비스 동작을 보장할 수 없습니다.

결과의 &는 HTML 오류인가요?

쿼리 쌍 사이의 구분자와 HTML에서 보이는 표기를 구분하세요. 링크를 HTML에 넣을 때와 실제 URL 문자열을 검사할 때의 표현이 다를 수 있습니다.

목록 값이 하나뿐이어도 확인해야 하나요?

값 하나일 때 우연히 비슷해 보여도 여러 값 입력에서는 달라질 수 있습니다. 최소 두 개의 서로 다른 값으로 검토해 보세요.

Python urlencode·doseq 공식 설명 보기

출처: Python 공식 문서, urllib.parse.urlencode. 확인일: 2026년 10월 12일. 기록 양식과 예시는 독자가 자기 조건을 확인하도록 구성했습니다.

대표 삽화는 AI로 제작했으며 본문 설명 도표는 직접 구성했습니다.

이 블로그의 인기 게시물

디노 블로그 링크 추출기

디노 글자수 계산기

URL에 앰퍼샌드 표기가 남을 때: HTML 원문과 추출한 href를 구분하세요