2017-01-12 50 views
-2

我嘗試打開谷歌上的特定頁面。與用戶在搜索關鍵字和特定網站(例如「2」)中鍵入內容一樣,然後提供結果。Python沒有足夠的格式字符串胳膊

所以,搜索一般工作。現在我試圖把這個特定的網站放進去。

class Google: 
    @classmethod 
    def search(self, search, sites): 
     page = requests.get("http://www.google.de/search?q=%s&start=%i 0"%search %sites) 
     [...] 


class Menu: 
    @classmethod 
    def start_menu(self): 
     begriff = raw_input("Bitte gib deinen Suchbegriff ein: ") 
     seiten = raw_input("Wie viele Seiten willst du öffnen?: ") 
     Google.search(begriff, seiten) 


Menu.start_menu() 

爲什麼它不工作?

錯誤:

TypeError: not enough arguments for format string 

謝謝!

+3

嘗試用'「%(搜索,網站)'在最後,沒有雙重% –

+0

@ Jean-FrançoisFabre是的,謝謝你 – Lucas

+0

BTW:[PyFormat.info](https://pyformat.info/) – furas

回答

1

字符串格式化將一個參數作爲元組。此時應更換

%search %sites 

% (search, sites) 
1

要申請多個值,使用元組,而不是多個%運營商:

"http://www.google.de/search?q=%s&start=%i 0" % (search, sites) 

會發生什麼事,否則是隻有search應用,這對於兩個插槽來說是不夠的字符串(% sites將應用於"..." % search的結果(如果成功的話))。

接下來,你會得到一個錯誤,sites不是一個數字:

TypeError: %d format: a number is required, not str 

因爲raw_input()返回一個字符串,不是一個數字。使用%s插值字符串:

"http://www.google.de/search?q=%s&start=%s 0" % (search, sites) 

你可能需要刪除末雜散' 0'了。

+0

啊,謝謝,這很有道理,現在我得到了這個錯誤:TypeError:%d格式:需要一個數字,而不是str – Lucas

+0

@Lucas:好吧,如果'sites'不是數字,不要使用'% i'或'%d'('%i'是'%d'的別名),或者先將'sites'轉換爲數字。 –

相關問題