Python TypeError: недостаточно аргументов для строки формата

Вот результат. Я полагаю, что это строки utf-8 ... некоторые из них могут быть NoneType, но они сразу же перестают работать, прежде чем такие ...

instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname, procversion, int(percent), exe, description, company, procurl

Ошибка типа: недостаточно аргументов для строки формата

Его 7 на 7, хотя?

Ответы на вопрос(3)

в моей строке формата. Решением этой проблемы является удвоение %%.

 20 мар. 2018 г., 18:57
Я получил вариант этой ошибки из-за опечатки:"foo: %(foo)s, bar: s(bar)% baz: %(baz)s" % {"foo": "FOO", "bar": "BAR", "baz": "BAZ"}
 06 июл. 2017 г., 20:51
Предоставление некоторых примеров кода того, как работает ваше решение и как оно терпит неудачу без него и т. Д., Может быть полезным. УвидетьHow do I write a good answer?, Обратите внимание, что это 5-летний вопрос, поэтому вы должны добавлять ответ, только если он предоставляет значительно больше информации, чем те, которые уже есть.
Решение Вопроса

% синтаксис для форматирования строк становится устаревшим. Если ваша версия Python поддерживает это, вы должны написать:

instr = "'{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}'".format(softname, procversion, int(percent), exe, description, company, procurl)

Это также исправляет ошибку, которая у вас случилась.

 22 июн. 2012 г., 09:49
@ F.J: Да, вы правы - я обновил ответ :)
 22 июн. 2012 г., 01:19
Это похоже на смешивание% форматирование иstr.format()Разве это не должно быть с использованием фигурных скобок в строке формата?
 20 авг. 2014 г., 20:35
Это работает и для модуля логирования? Под этим понимается такая интерполяция?
 03 июн. 2015 г., 21:12
Кроме того, format () поддерживает более явные способы выражения того, что происходит, например "{a} {b}" .format (a = "3", b = "4").
 03 июн. 2015 г., 19:40
@SimeonVisser, почему это устаревает? Если вы, например, используете одну переменную для хранения строки формата и хотите поместить строку с замененными значениями в одну и ту же переменную, вы получите чуть более чистый код сformat_string %= ('bla', 'bla', 'bla'), Хотите уточнить или указать какую-нибудь полезную ссылку по этому поводу?

instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % (softname, procversion, int(percent), exe, description, company, procurl)

То, что у вас есть, эквивалентно следующему:

intstr = ("'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname), procversion, int(percent), exe, description, company, procurl

Пример:

>>> "%s %s" % 'hello', 'world'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string
>>> "%s %s" % ('hello', 'world')
'hello world'
 y2k21 июн. 2012 г., 22:30
Это сработало ... вроде. Я пытался использовать% s форматирование, чтобы избежать ошибки NoneType, но я получаю его до сих пор. Связанные с:stackoverflow.com/questions/1338690/…

Ваш ответ на вопрос