2012-06-17 3 views
0

와 특수 문자 쿼리 문자열을 탈출, 문제는 그들이 경로 및 쿼리 문자열에 공백이나 특수 문자가 포함되어 있다는 것입니다, 여기에 몇 가지 예를내가 여기 긁어를 통해 가지고 꽤 지저분한 URL을 가지고 파이썬

http://www.example.com/some path/to the/file.html 
http://www.example.com/some path/?file=path to/file name.png&name=name.me 
에게 있습니다

그래서 urlopen에 전달할 수 있도록 URL을 탈출하기위한 쉽고 강력한 방법이 있습니까? urlib.quote를 시도했지만 '?', '&'및 '='도 이스케이프 처리 된 것으로 보이며 프로토콜을 이스케이프 처리하는 것 같습니다. 현재 내가 시도하고있는 것은 무엇입니까? 할 프로토콜, 경로 이름 및 쿼리 문자열을 분리하여 별도로 탈출 사용 정규식이지만, 어떤 조언은 기본적으로 /를 제외한 모든 말을 인용합니다

+0

유일한 문제는 공백입니다. 'url_str.replace (' ','% 20 ')'의 문제점은 무엇입니까? – Dougal

+0

Dougal, 어쩌면 다른 문자도 인코딩해야 할 가능성이 있습니다. 곧 내 질문을 편집하겠습니다. – hndr

답변

5

urllib.quote을 감사합니다 제대로 가 구분이 arent 경우가 있습니다. 당신은 두 번째 인수로 혼자 떠나 그것을 문자 목록을 전달할 수 있습니다

urllib.quote('http://www.example.com/some path/?file=path to/file name.png&name=name.me', 
      '/:?&=') 
'http://www.example.com/some%20path/?file=path%20to/file%20name.png&name=name.me' 

을하지만이 semimanually 덤비는하는 꽤 까다로운 물건입니다.

+0

감사합니다. 전에 안전한 매개 변수에 대해 알지 못했습니다 ... – hndr