ValueError: код неизвестного формата 'g' для объекта типа 'str'

Я новичок в Python, и я пытаюсь написать простую функцию печати, но я получаю странную ошибку. Это мой код:

#! /usr/bin/env python3.2 import numpy as np a=np.arange(1,10,1) print(a) for i in a: print(i) print(type(i)) print("{0:<12g}".format(i)) 

Выход:

 [1 2 3 4 5 6 7 8 9] 1 <class 'numpy.int64'> Traceback (most recent call last): File "./test.py", line 9, in <module> print("{0:<12g}".format(i)) ValueError: Unknown format code 'g' for object of type 'str' 

Почему печать принимает «numpy.int64» в виде строки? Я должен добавить, что он отлично работает для обычного списка: (например, [1,2,3,4]). Я был бы очень признателен за любые идеи по этой проблеме, спасибо ;-).

Это известная ошибка и должна быть исправлена ​​в версии 2.0. Тем временем вы можете использовать старый синтаксис %f который работает.

Кто-то сможет дать вам более подробный ответ, но я думаю, что здесь происходит то, что вы используете "{0:<12g}".format(i) который использует специальное форматирование. Если вы попробуете "\{{0}:<12g\}".format(i) вы, вероятно, получите лучшие результаты. С помощью косой черты избегает {} что и дает вам ошибку.