Python 3.12 쿼리의 세미콜론: parse_qs 기본 구분자는 &입니다

모니터에 앰퍼샌드와 세미콜론이 구분되어 보이는 개발 작업 개념 삽화

Python 3.12의 parse_qs 기본 구분자는 &입니다. 쿼리 안에 세미콜론이 있다고 자동으로 다음 항목으로 나뉘지 않으며, separator를 세미콜론으로 바꾸면 이번에는 &를 같은 방식으로 나누지 않습니다.

1. 버전을 먼저 확인하기

Python 공식 문서는 3.10에서 separator 인수가 추가되고 기본 구분자가 &로 정해졌다고 설명합니다. 그 이전 버전의 동작을 소개한 글과 현재 3.12 코드를 같은 조건으로 비교하지 마세요.

URL 전체와 쿼리 부분도 구분합니다. 다음 예시는 URL의 query에 해당하는 문자열만 parse_qs에 전달한 결과이며, 네트워크 요청이나 실제 사이트의 지원 형식을 확인하는 예시는 아닙니다.

2. 같은 문자열을 두 설정으로 비교

원본: 쿼리 문자열을 먼저 보존 / 기본값: separator는 & / 명시 값: 세미콜론 하나를 구분자로 선택 / 혼합: 둘을 동시에 나눈다고 보지 않기

입력 예시: tag=korea;lang=ko&ref=naver. Python 3.12.8에서 아래 결과를 확인했습니다.

호출생성된 항목
기본 parse_qstag → korea;lang=ko / ref → naver
separator=';'tag → korea / lang → ko&ref=naver

기본 호출에서는 세미콜론이 tag 값 안에 남습니다. 세미콜론을 구분자로 지정한 호출에서는 &ref=naver가 lang 값 안에 남습니다. 어느 결과가 옳은지는 입력 데이터가 어떤 형식을 약속했는지와 함께 판단해야 합니다.

3. 무조건 치환하기 전에 남길 메모

보존할 것이유
원래 쿼리정규화 과정에서 달라진 부분 대조
Python 버전·호출 인수구분자 해석 조건 확인
입력 출처의 규칙사이트가 기대하는 형식과 비교
파싱 결과값 안에 남은 기호를 다시 확인

원문의 모든 세미콜론을 &로 바꾸면 값 자체에 들어 있던 기호의 의미까지 바꿀 수 있습니다. 퍼센트 인코딩된 데이터와 실제 구분자도 구분해야 합니다. 링크 수집기에서는 원본을 보존하고 변환 규칙을 명시하는 편이 좋습니다.

4. 자주 묻는 질문

separator를 바꾸면 &와 ;를 모두 인식하나요? 이 인수는 한 가지 구분자를 선택합니다. 두 기호를 동시에 나누는 설정으로 설명하지 마세요.

파싱이 되면 안전한 주소인가요? URL 파싱과 목적지 검증은 별도입니다. 이 예시는 쿼리 처리만 확인하며 실제 방문 권한이나 주소의 안전성을 판정하지 않습니다.

Python 3.12 separator 공식 설명 (영문)

공식 도움말 확인일 2026년 10월 15일: Python 3.12 separator 공식 설명 (영문).

대표 이미지는 AI로 제작한 개념 삽화이며, 본문 설명 도표는 직접 작성했습니다.

이 블로그의 인기 게시물

디노 블로그 링크 추출기

디노 글자수 계산기

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