2017-01-12 29 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'转换为数字。 –

相关问题