Python Подставляя только число с плавающей точкой - PullRequest
1 голос
/ 17 сентября 2011

Я читаю в CSV-файл извлечение части данных со строкой:

x = float(node[1])

когда я печатаю (x), я получаю правильное значение или точное значение, найденное в ячейке. например, 153.018848

Но когда я пытаюсь передать x как переменную в следующем:

print('<node version="0" lon="%d">' %(x)) 

вывод будет <node version="0" lon="153">. Конечно, я хочу значение 153.018848.

Что я упустил из виду?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 17 сентября 2011

Вы упустили из виду тот факт, что %d для целых чисел . Попробуйте %f вместо.

1 голос
/ 17 сентября 2011

Вы используете неправильный флаг формата.% d для целых чисел, используйте% f для чисел с плавающей запятой.

1 голос
/ 17 сентября 2011

Вы хотите заменить% d на% f, проблема решена;)

См .: http://docs.python.org/release/2.5.2/lib/typesseq-strings.html

Для получения бонусных баллов вы знаете, что можете собрать длинные строки формата, которыевсе еще читается с помощью словарей?Вы можете прочитать об этом больше, но опция! R, которую я использовал с вызовом функции repr () для переменной, так что вы знаете, что вставленное будет именно тем, что вы видели напечатанным в вашей отладке:

string = """<tagname id=%{idval!r} type=%{tagtype!r} foo=%{bar!r}"""
print string.format( **{'idval':var1, 'tagtype':var2, 'bar':var3})
...