source

PythonTypeError: 형식 문자열에 대한 인수가 부족합니다.

lovecheck 2023. 8. 15. 11:12
반응형

PythonTypeError: 형식 문자열에 대한 인수가 부족합니다.

여기 결과가 있습니다.이건 utf-8 줄입니다.이들 중 일부는 NoneType일 수 있지만 이러한 유형이 발생하기 전에 즉시 실패합니다.

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

유형 오류: 형식 문자열에 대한 인수가 부족합니다.

7시인데 7시야?

형식 인수를 튜플에 넣어야 합니다(괄호 추가).

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'

참고:%문자열 형식 지정을 위한 구문이 구식이 되고 있습니다.Python 버전에서 지원하는 경우 다음과 같이 작성해야 합니다.

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

이렇게 하면 우연히 발생한 오류도 해결됩니다.

사용할 때 동일한 오류가 발생했습니다.%내 형식 문자열에 백분율 문자로 표시됩니다.이에 대한 해결책은 두 배로 증가하는 것입니다.%%.

특정한 이유로 원시 쿼리를 사용하던 것과 동일한 문제가 있었는데 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')
def process_item(self, item, spider):
    sql = "insert into fd(province,pici,subject,maxscore,midscore,minscore,zy,school) values('%s', '%s','%s'," \
          "'%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)

언급URL : https://stackoverflow.com/questions/11146190/python-typeerror-not-enough-arguments-for-format-string

반응형