我有以下print
声明: -
print("{0:0.2f}% in traing set".format((len(X_train)/(df.index))*100))
其中
X_train = is 70% of sample data(training data)
和
df.index is RangeIndex(start=0, stop=768, step=1)
当我运行print语句时,我收到错误如下
non-empty format string passed to object.__format__
打印声明的答案应为
69.92 in training set
30.08 in test set
我无法纠正此行为。 任何帮助将不胜感激。
巴勒特。
答案 0 :(得分:0)
如果应该格式化的对象是一个numpy数组,我会收到此错误。 RangeIndex()
必须产生类似的东西。
In [82]: "{0:0.2f}% in traing set".format((20/(np.arange(3)))*100)
...
TypeError: non-empty format string passed to object.__format__
In [83]:
如果我只是给它一个列表,则会出现同样的错误:"{0:0.2f}% in traing set".format([1,2,3])
如果参数只是一个数字,格式化工作正常:
In [83]: "{0:0.2f}% in traing set".format((20/3)*100)
Out[83]: '666.67% in traing set'
使用像列表或数组这样的对象的唯一format
说明符是plain str / repr,
In [102]: print("{} in traing set".format((len(X_train)/(np.arange(1,3)))*100))
[ 5000. 2500.] in traing set
===============
在评论中难以阅读代码;最好将其添加为原始问题的编辑(清楚地标记为这样)。以下是我对格式化的猜测:
value1 = len(X_train)
value2 = len(X_test)
value3 = len(df.index)
value4 = (value1/value3)*100
value5 = (value2/value3)*100
print("{0:0.2f}% in training set".format(value4))
print("{0:0.2f}% in test set".format(value5))
是的,将值的计算与打印格式分开是个好主意。