ValueError:无法从手动字段规范切换到自动字段编号

时间:2017-10-16 10:25:52

标签: python-3.x

班级:

class Book(object):
    def __init__(self, title, author):
        self.title = title
        self.author = author

    def get_entry(self):
        return "{0} by {1} on {}".format(self.title, self.author, self.press)

从中创建我的书的实例:

In [72]: mybook = Book('HTML','Lee')
In [75]: mybook.title
Out[75]: 'HTML'
In [76]: mybook.author
Out[76]: 'Lee'

请注意,我没有初始化属性'self.press',而是在get_entry方法中使用它。继续输入数据。

mybook.press = 'Murach'
mybook.price = 'download'

到目前为止,我可以使用vars

指定所有输入的数据
In [77]: vars(mybook)
Out[77]: {'author': 'Lee', 'title': 'HTML',...}

我在控制台中输入了很多关于mybook的数据。当尝试调用get_entry方法时,错误报告。

mybook.get_entry()
ValueError: cannot switch from manual field specification to automatic field numbering.

所有这些都在控制台上以交互模式进行。我珍惜数据输入,进一步在文件中挑选mybook对象。但是,它有缺陷。如何在交互模式下拯救它。 或者我必须重新开始。

4 个答案:

答案 0 :(得分:10)

return "{0} by {1} on {}".format(self.title, self.author, self.press)

不起作用。如果你指定职位,你必须在最后完成:

return "{0} by {1} on {2}".format(self.title, self.author, self.press)

在你的情况下,最好是自动离开python:

return "{} by {} on {}".format(self.title, self.author, self.press)

答案 1 :(得分:1)

如果可以以表格格式给出适当的输出,如果 而不是使用格式去f“”;

例如

<!DOCTYPE html>
<html>
<head>
    <title><strong>Unable to handle Value Error</strong></title>
</head>
<body>
<p><ol>for name, branch,year in college:</ol>
         <ol> print(f"{name:{10}} {branch:{20}} {year:{12}} )</ol>
    
    <ol>name       branch               year    </ol>
    <ol>ankit      cse                         2</ol>
    <ol>vijay      ece                         4</ol>
<ol>    raj        IT                          1</ol>

</body>
</html>

答案 2 :(得分:1)

您之所以看到此错误,主要是因为您使用了空花括号,表示 python 使用默认编号,后来您在替换字段中指定了数字。从而给解释器造成混乱。

 print ("{0} by {1} on {}".format(self.title, self.author, self.press))

这里的 {} 表示从第一个替换字段开始,然后一直到结束,而不是像从零开始的切片一样。

要清除此错误,您可以使用

print ("{0} by {1} on {2}".format(self.title, self.author, self.press))

print ("{} by {} on {}".format(self.title, self.author, self.press))

答案 3 :(得分:0)

print ("{0:.1f} and the other no {0:.2f}".format(a,b)) 

python不能在一次执行代码中同时进行手动和自动精度处理(字段编号)。您可以为每个变量指定字段编号,也可以让python自动对所有变量进行编号。