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

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

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

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

его 7 для 7, хотя?

3 ответов


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

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

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


вам нужно поместить аргументы формата в кортеж (добавить круглые скобки):

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'

Я получил ту же ошибку при использовании % в процентах в строке формата. Решение этой проблемы заключается в удвоении%%.