IndexError: tuple index out of range when parsing method arguments

北战南征 提交于 2019-12-05 05:48:45

you have to use * to unpack the tuple into actual arguments for format:

print(message.format(*arguments))

otherwise, arguments is seen as the sole argument of format (and it works for the first {} occurrence, by converting your tuple to string, but chokes when it encounters the second occurrence of {})

ppasler

You need to pass arguments not tuple. This is done by using '*arguments'. Expanding tuples into arguments

def log(*args):
    message = str(args[0])
    arguments = tuple(args[1:])
    # message itself
    print(message)
    # arguments for str.format()0
    print(arguments)
    # shows that arguments have correct indexes
    for index, value in enumerate(arguments):
        print("{}: {}".format(index, value))
    # and amount of placeholders == amount of arguments
    print("Amount of placeholders: {}, Amount of variables: {}".format(message.count('{}'), len(arguments)))

    # But this still fails! Why?
    print(type(arguments))
    print(message.format(*arguments))

log("First: {}, Second: {}, Third: {}, Fourth: {}", "asdasd", "ddsdd", "12312333", "fdfdf")  

Try this

print(message.format(*arguments))

format does not expect a tuple

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!