ValueError: имя поля нулевой длины в формате python [duplicate]

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

Я часами пытался решить эту проблему, но безрезультатно. Я читаюэто руководство. I haven't found any examples how to do what I need.

Когда я запускаю скрипт, я получаю эту ошибку (частично опущена):

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

Код написан на python 2.6 или 2.7, но я запускаю python 3.1. Как мне нужно изменить формат вывода, чтобы он работал?

<code>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()
</code>

Спасибо за вашу помощь.

 malganis07 апр. 2012 г., 13:45
Я все еще получаю ту же ошибку.
 malganis07 апр. 2012 г., 14:14
Проблема в том, что в одной скобке два спецификатора? Я пропустил .18e, а затем я получил OverflowError: (34, «Числовой результат нашего диапазона»)
 phihag07 апр. 2012 г., 13:43
Ну что ты хочешьdo? Или по-другому спросить, почему ты не хочешь"{}{}".format(x,y)?

Ответы на вопрос(1)

Решение Вопроса

Скорее всего, вы используете старую версию Python, а не 3.1. В Python 2.6 вам нужны индексы в спецификациях формата, например:

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

Обновите вашу версию Python до последней, предпочтительно 2.7 или 3.2, чтобы решить эту проблему. Согласно документации, опуская числовые индексыдолжен работать в Python 3.1:

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

 malganis07 апр. 2012 г., 14:16
Я использую Python 3.1.3 и использую Geanny. Я не знаю, как установить версию 3.2. Я новичок в Linux.
 malganis07 апр. 2012 г., 15:58
У меня было 11.10, но мне это не понравилось. Я перееду в Linux Mint в следующем. Теперь он запускает 3.1.2, и эта ошибка больше не отображается. Спасибо за вашу помощь.
 07 апр. 2012 г., 14:57
Извини я понятия не имею чтоGeanny является. Вы имеете в виду редакторGeany? В любом случае вы можете узнать свою версию Python сimport sys;print(sys.version), Есть много дистрибутивов Linux, какой из них вы используете?
 malganis07 апр. 2012 г., 15:09
Это Geany. Я использую Ubuntu 10.04. Ты был прав. Я использую 2.6.5. Я попытался с этим: output.write (& quot; {0: & gt; 026, .18e} {1: & gt; 026, .18e} \ n & quot; .matmat (x, y)) И я получаю ValueError: Неверная спецификация преобразования
 07 апр. 2012 г., 15:26
В текущемUbuntu 11.10, Python 2.7 is the default, Таким образом, вы можете просто обновить свою установку Ubuntu - я бы в любом случае не рекомендовал старую для новичка. С другой стороны,install a newer Python в вашей системе, или заставьте вашу программу работать под Python3, запустив ее с#!/usr/bin/env python3.1.

Ваш ответ на вопрос