2017-09-22 5 views
1

I 파이썬 3 http 서버에서 다음 코드는 URL을 구문 분석하고 쿼리 문자열 구문 분석이 있습니다값에 표시 [ '']을하지 않고 파이썬 3에서 쿼리 문자열에서 값을 가져

parsedURL = urlparse(self.path) 
parsed = parse_qs(parsedURL.query) 

이 경우 parsedURL.queryx=7&=3이됩니다. 7과 3을 꺼내 변수 x와 y와 같게 설정하려고합니다. 나는 모두가

x = parsed['x'] 
y = parsed['y'] 

x = parsed.get('x') 
y = parsed.get('y') 

이러한 솔루션 모두 X = ['7']와 y = ['3']을 마련하지만 난 브래킷과 작은 따옴표를 싶지 않아, 내가 그냥 원하는 시도했습니다 값이 73인데 정수가되도록하고 싶습니다. 값을 가져와 대괄호/따옴표를 없애려면 어떻게합니까?

+0

'parse_qsl' 당신을 위해 더 적합 할 수있다 ('parse_qs'는 내부적를 사용하고, 목록으로 값을 누적) – wim

답변

0

간단합니다 :

x = int(parsed['x'][0]) 
y = int(parsed['y'][0]) 

또는

x = int(parsed.get('x')[0]) 
y = int(parsed.get('y')[0]) 

은 당신의 목적을 제공? 물론 적절한 유효성 검사를 수행해야하지만 반환 된 배열의 첫 번째 요소를 int으로 변환하면이 코드가 비즈니스를 수행하게됩니다.

이것은 get()이 값 배열을 반환하기 때문에 발생합니다. 따라서 url?x=1&x=2&x=foo을 구문 분석하면 ['1', '2', 'foo']과 같은 목록이 반환됩니다. 일반적으로 쿼리 문자열에는 각 변수의 인스턴스가 하나 (또는 ​​제로) 만 있으므로, [0]으로 첫 번째 항목을 가져옵니다.

참고는 documentation for parse_qs()는 말한다 :

데이터 사전으로 반환됩니다. 사전 키는 고유 한 쿼리 변수 이름이고 값은 각 이름이 인 값 목록입니다.

+0

내 오 하나님이 그렇게 간단하지만 정말 감사합니다 일 했어요! '[0]'이있는 부분이 무엇을 설명 할 수 있습니까? 그것이'int '일을 시도한 것을 기억하고 있기 때문에 그것이 작동하게 된 것입니다. 당신이 말할 수 없다면, 나는 진짜로 파이썬 하하 – Takaia

+0

새로운거야, 좋아, 조금 더 텍스트를 추가했습니다. –

+0

완벽! 내가 선호하는 대답으로 설정 하겠지만, 당신은 너무 빨리 대답 해 주면 아직 나를 풀어주지 않을 것입니다. 다시 한 번 감사드립니다! – Takaia