ValueError: cannot switch from manual field specification to automatic field numbering

Question:

The class:

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)

Create an instance of my book from it:

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

Please notice that I didn’t initialize attribute ‘self.press’,while use it in the get_entry method.Go ahead to type in data.

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

Till now, I can specify all the data input with vars

In [77]: vars(mybook)
Out[77]: {'author': 'Lee', 'title': 'HTML',...}

I hardtype lot of data about mybook in the console.When try to call get_entry method, errors report.

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

All this going in interactive mode on console.I cherish the data inputed, further to pickle mybook object in file. However, it is flawed. How can rescue it in the interactive mode.
or I have to restart all over again.

Asked By: AbstProcDo

||

Answers:

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

that doesn’t work. If you specify positions, you have to do it through the end:

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

In your case, best is to leave python treat that automatically:

return "{} by {} on {}".format(self.title, self.author, self.press)
print ("{0:.1f} and the other no {0:.2f}".format(a,b)) 

python cannot do both manual and automatic precision handling (field numbering) in a single execution of code. You can either go for specifying the field numbering for each variable or let python do it automatically for all.

Answered By: Taalib Zama

Well if can give a proper output in a table format if
instead of using format go for f"" ;

for e.g

<!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>
Answered By: vineet27

Escape the special characters
eg: '{}' -> '{{}}'

Answered By: praveen