Странное поведение ruamel.yaml при сбросе поплавков - PullRequest
0 голосов
/ 08 мая 2020

Когда я читаю свой YAML, это нормально, если я печатаю с упорядоченным dict, но когда я его сбрасываю, мои поплавки каким-то образом промываются.

Вот минимальный рабочий пример

import sys
import ruamel.yaml

yaml = ruamel.yaml.YAML()   

s = 'f: [2330.0e6, 2338.0e6]'
d = yaml.load(s)

yaml.dump(dict, sys.stdout)
print(d)

Это выводит

f: [2330.0e6, 2340.0e6]
ordereddict([('f', [2330000000.0, 2338000000.0])])

Упорядоченный dict правильный, но дамп YAML изменил номер на 2340 ...

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Ответ Антона вдохновил меня на обновление моего ruamel.yaml (с 0.15). У меня Python 2.7 (я знаю, что он больше не поддерживается, длинная история ...)

В любом случае, pip install --upgrad ruamel.yaml исправил проблему :)

0 голосов
/ 09 мая 2020

То, что вы показываете, вероятно, не является всей программой.

Вы загружаете в переменную d, но вы сбрасываете dict, и последний обычно дает RepresenterError в качестве встроенного dict сам класс не может быть сброшен (конечно, его экземпляр может быть сброшен)

Если я запускаю python 3.8:

import sys
import ruamel.yaml

yaml = ruamel.yaml.YAML()   

s = 'f: [2330.0e6, 2338.0e6]'
d = yaml.load(s)

yaml.dump(d, sys.stdout)
print(d)

я получаю

f: [2330.0e6, 2338.0e6]
ordereddict([('f', [2330000000.0, 2338000000.0])])

как и ожидалось.

...