Python TypeError:格式字符串的参数不足
- 2025-03-05 09:18:00
- admin 原创
- 68
问题描述:
这是输出。我相信这些是 utf-8 字符串……其中一些可以是 NoneType,但它会立即失败,在那些类似的字符串之前……
instr = "'%s', '%s', '%d', '%s', '%s', '%s', '%s'" % softname, procversion, int(percent), exe, description, company, procurl
TypeError:格式字符串的参数不足
不过是 7 比 7 吗?
解决方案 1:
您需要将格式参数放入元组中(添加括号):
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'
解决方案 2:
请注意,%
格式化字符串的语法已经过时了。如果你的 Python 版本支持它,你应该这样写:
instr = "'{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}'".format(softname, procversion, int(percent), exe, description, company, procurl)
这也修复了您遇到的错误。
解决方案 3:
当我在格式字符串中使用百分号字符时,我遇到了同样的错误%
。解决方法是将 加倍%%
。
解决方案 4:
我遇到了同样的问题,我出于特定原因使用原始查询,这是在 TIME_FORMAT 函数中添加双引号。
User.objects.raw(
f'SELECT f1,f2,TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(end_time) - TIME_TO_SEC(start_time))),"%%H:%%i") AS log FROM users GROUP BY start_dt')
解决方案 5:
def process_item(self, item, spider):
sql = "insert into fd(province,pici,subject,maxscore,midscore,minscore,zy,school) values('%s', '%s','%s'," \n "'%s','%s','%s','%s','%s','%s')"
data = (item['province'],item['pici'],item['subject'],item['maxscore'],item['midscore'],item['minscore'],item['zy'],item['school'])
self.cursor.execute(sql % data)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD