web-dev-qa-db-ja.com

Python TypeError:書式文字列に十分な引数がありません

出力は次のとおりです。これらは私が信じるutf-8文字列です...これらのいくつかはNoneTypeでもかまいませんが、そのようなものの前にすぐに失敗します...

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

TypeError:書式文字列の引数が不足しています

7対7

120
y2k

文字列をフォーマットするための%構文が古くなっていることに注意してください。 Pythonのバージョンがサポートしている場合、次のように記述する必要があります。

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

これにより、発生したエラーも修正されます。

151
Simeon Visser

フォーマット引数をタプルに入れる必要があります(括弧を追加):

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'
215
Andrew Clark

%をフォーマット文字列のパーセント文字として使用すると、同じエラーが発生しました。これに対する解決策は、%%を2倍にすることです。

9
Bruce Jakeway