2012-07-17 51 views
1

我想連接循環迭代的url和整數基礎。但我得到的錯誤: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)) 

我也試圖urllib.urlencode功能,但最終得到了同樣的錯誤。

我想我應該除了要查詢的是,我通過它在我的主要字符串我想當前迭代值分配給在URL中開始參數都提到>&start=1

所以第一次迭代I會喜歡有我的網址爲

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隱含這是否適合你。也不需要join,因爲join用於在一個序列中採用多個字符串並使用連接字符將它們拉到一起。你只需要簡單的字符串格式。

+0

這不會在URL中的任何地方使用'i',這個問題顯然是有意的。 – 2012-07-17 18:57:02

+0

@DavidRobinson yup,原來的建設讓我困惑,我以爲他意味着把'i'連接到最後,所以我更新了我的答案 – 2012-07-17 18:58:55

+0

這對我來說無疑是正確的! +1 – 2012-07-17 19:00:12

1

我想你是誤解join做什麼。它使用它的參數作爲分隔符加入傳遞序列的元素:

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

這聽起來像你只想做"http://..." + convertedI,但目前還不清楚你想要做什麼。你想在哪裏輸入convertedIurllib.quote_plus(query)值?

+0

我試過這個,但我得到TypeError:並非所有在字符串格式化過程中轉換的參數 address ='http://www.google.com/search?q=%s&num=100&hl=zh-CN&start='+ convertedI%(urllib.quote_plus (query)) – 2012-07-17 18:59:55

+0

爲什麼你在那裏放一個分號?就像你所做的那樣,你必須在url和'convertedl'周圍放置圓括號(否則操作順序會嘗試並將查詢添加到'convertedl'字符串中)。不過,Daniel DiPaulo的回答是最好的。 – 2012-07-17 19:01:18