ValueError:“str”类型的对象的未知格式代码“g”

问题描述 投票:0回答:3

我是 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'

为什么 print 将“numpy.int64”作为字符串?我必须补充一点,它非常适合普通列表:(例如 [1,2,3,4])我将非常感谢有关此问题的任何想法,谢谢;-)。

python numpy
3个回答
2
投票

这是一个已知的错误,应该在 2.0 版本中修复。在此期间,您可以使用有效的旧语法

%f


0
投票

有人可以给你一个更深入的答案,但我认为这里发生的是你正在使用

"{0:<12g}".format(i)
它使用特殊的格式。如果您尝试
"\{{0}:<12g\}".format(i)
,您可能会得到更好的结果。使用斜杠可以转义
{}
,这就是给你带来错误的原因。


0
投票

如果您在尝试使用带有注释的seaborn.heatmap时偶然发现此错误,例如:

import seaborn as sns
import numpy as np

data = pd.DataFrame(np.random.rand(3,4))
annot = np.where(data > 0, 'Yes', 'No')
ax = sns.heatmap(data, annot=annot)

ValueError:“numpy.str_”类型的对象的未知格式代码“g”

您可以通过添加

fmt=''
作为 sns.heatmap 的参数来使其工作,例如:

ax = sns.heatmap(data, annot=annot, fmt='')

应该可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.