2017-01-12 10 views
-2

Я пытаюсь открыть конкретную страницу в Google. Подобно типам пользователя в ключе ключевых слов поиска и конкретном сайте (например, «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

попробуйте с помощью ''% (поиск, сайты) 'в конце концов, нет double%. –

+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 format: требуется номер, а не str – Lucas

+0

@ Лукас: ну, если 'sites' не является числом, не используйте'% i' или '% d' ('% i' является псевдонимом для '% d') или сначала конвертирует' sites' в число. –