2012-07-17 3 views
1

루프의 반복에 url과 integer base를 연결하려고합니다. 나는 또한 기능을 urllib.urlencode 시도했지만 같은 오류가 결국 TypeError: not all arguments converted during string formattingPython : URL과 정수 연결

for i in range(0,20): 
    convertedI = str(i) 
    address = 'http://www.google.com/search?q=%s&num=100&hl=en&start='.join(convertedI) % (urllib.quote_plus(query)) 

:하지만 오류를 얻고있다.

나는 내가 내 주에서 그것을에서 통과 문자열 내가 URL의 시작 매개 변수에 현재 반복 값을 할당 할 인 쿼리 추가로 언급해야 생각 나는 것>&start=1

그래서 첫 번째 반복

http://www.google.com/search?q=%s&num=100&hl=en&start=1' % (urllib.quote_plus(query)) 

답변

3
for i in range(0, 20): 
    address = 'http://www.google.com/search?q=%s&num=100&hl=en&start=%s' % (urllib.quote_plus(query), i) 

로 암시 적으로 당신을 위해 수행 str%s으로 사용할 필요가 내 URL이없는 것을 좋아합니다. join도 필요하지 않습니다. join은 시퀀스 내의 여러 문자열을 가져 와서 결합 문자와 함께 가져 오는 데 사용됩니다. 간단한 문자열 형식 만 지정하면됩니다.

+0

이것은 URL에서 'i'를 사용하지 않았으므로 명확하게하려는 것입니다. –

+0

@DavidRobinson 그래, 원래 건설 날 혼란, 나는 그가 내 대답을 업데이 트했습니다 그래서 그는'i'을 연결하는 것을 의미합니다 가정합니다 –

+0

이것은 분명히 내게 보인다! +1 –

1

나는 무엇을 join가 오해하고 있다고 생각합니다. 그냥 "http://..." + convertedI을하고 싶은처럼

>>> ','.join(['a', 'b', 'c']) 
'a,b,c' 

그것은 소리,하지만 당신이해야 할 노력하고 정확히 분명하지 않다 : 그것은 전달 된 시퀀스의 요소를 결합하는 구분 기호로 인수를 사용합니다. convertedIurllib.quote_plus(query) 값을 문자열에서 어디로 보내시겠습니까?

+0

시도했지만 TypeError가 발생했습니다. 문자열 서식 지정 중에 모든 인수가 변환되지 않았습니다. 주소 = 'http://www.google.com/search?q=%s&num=100&hl=en&start='+ convertedI % (urllib.quote_plus (쿼리)) –

+0

왜 거기에 세미콜론을 넣었습니까? URL을 괄호로 묶고'convertedl' (조작 순서는'convertedl' 문자열에 쿼리를 추가해야합니다). Daniel DiPaulo의 답변이 가장 좋습니다. –