ValueError: zero length field name in format python

PythonFormat

Python Problem Overview


> Possible Duplicate:
> “ValueError: zero length field name in format” error in Python 3.0,3.1,3.2

I have spent hours trying to solve this problem but to no avail. I read this guide. I haven't found any examples how to do what I need.

When I run the script I get this error (partly omitted):

Traceback (...):
   [...]
   output.write("{: > 026,.18e} {: > 026,.18e}\n".format(x,y))
ValueError: zero length field name in format.

The code is written in python 2.6 or 2.7 but I run python 3.1. How would I need to change output format so that it would work?

def f(x,y,a = 0.01):
    return y/(a+x)-y**3

def ekspEuler(N,dat):
    output = open(dat,"w")
    h = 3.0/N
    x,y = 0,1 #zac.pogoj

    for i in range(1,N+2):
        output.write("{: > 026,.18e} {: > 026,.18e}\n".format(x,y))
        y += h*f(x,y)
        x = i*h
    output.close()

Thanks for your help.

Python Solutions


Solution 1 - Python

Chances are that you're running an old Python version, and not 3.1. In Python 2.6, you need indices in the format specs, like this:

"{0} {1}\n".format(x,y)

Update your Python version to a recent one, preferably 2.7 or 3.2, to fix the problem. According to the documentation, leaving out the numeric indices http://docs.python.org/dev/library/string.html#format-string-syntax">should work in Python 3.1:

> Changed in version 3.1: The positional argument specifiers can be omitted, so '{} {}' is equivalent to '{0} {1}'.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmalganisView Question on Stackoverflow
Solution 1 - PythonphihagView Answer on Stackoverflow