Python YAML сохраняет новую строку без добавления дополнительной строки строки

У меня есть аналогичная проблема с этим вопросом, что мне нужно вставить новые строки в строку значений отображения YAML и предпочитаем не вставлять \n самостоятельно. Ответ предполагает использование:

 Data: | Some data, here and a special character like ':' Another line of data on a separate line 

вместо

 Data: "Some data, here and a special character like ':'\n Another line of data on a separate line" 

который также добавляет новую строку в конце , что неприемлемо.

Я попытался использовать Data: > но показал, что дает совершенно разные результаты. Я прочитал окончательную новую строку после чтения в файле yaml, и, конечно же, это работает, но это не изящно. Любой лучший способ сохранить новые строки без добавления дополнительного в конце ?

Я использую python 2.7 fwiw

One Solution collect form web for “Python YAML сохраняет новую строку без добавления дополнительной строки строки”

Если вы используете | Это делает скаляр в скалярном блочном стиле . Но поведение по умолчанию | , обрезается, и это не дает вам нужную вам строку (поскольку это оставляет окончательную новую строку).

Вы можете «изменить» поведение | путем крепления индикаторов блокировки блока

полоса

Отключение определяется индикатором «-». В этом случае окончательный разрыв строки и любые завершающие пустые строки исключаются из содержимого скаляра.

клип

Обрезание – это поведение по умолчанию, используемое, если не указана явный индикатор chomping. В этом случае окончательный символ прерывания строки сохраняется в содержимом скаляра. Однако любые конечные пустые строки исключаются из содержимого скаляра.

Держать

Хранение задается индикатором «+». В этом случае окончательный разрыв строки и любые завершающие пустые строки считаются частью содержимого скаляра. Эти дополнительные линии не подлежат складыванию.

Добавив оператор stripchomping ' - ' в ' | ', вы можете предотвратить / удалить окончательную новую строку: ¹

 import ruamel.yaml as yaml yaml_str = """\ Data: |- Some data, here and a special character like ':' Another line of data on a separate line """ data = yaml.load(yaml_str) print(data) 

дает:

{'Данные': «Некоторые данные здесь и особый символ типа:: \ \ Другая строка данных в отдельной строке"}


¹ Это было сделано с помощью ruamel.yaml, автором которого я являюсь. Вы должны получить тот же результат с PyYAML (из которого ruamel.yaml является надмножеством, сохраняющим комментарии и буквальные скалярные блоки в обратном направлении).

  • Преобразование CSV в YAML, с Unicode?
  • Переносимые переменные записи в файл YAML
  • Как я могу контролировать, какую скалярную форму PyYAML использует для моих данных?
  • Получение ученого представления данных из неконтролируемого обучения в pylearn2
  • Могу ли я ускорить YAML?
  • Использование python для сброса hexidecimals в YAML
  • Разбор YAML, возврат с номером строки
  • Разбор XML или YML в OpenCV с помощью Python
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.