- текст был экспортирован с помощью SnakeYaml и включал возврат каретки.
- обтекание и длина текста было так, что \r\n был разделен как часть упаковки
---
items:
- description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmode\
\ ut labore et dolore magna aliqua.\r\n\r\nUt enim ad minim veniam, quis nost. \r\
\n \r\n\r\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dol\
\ nulla pariatur.\r\n\r\nExcepteur sint occaecat cupidatat non proident, sunt ."
Использование следующего сценария для чтения и записи одного и того же файла
❯ cat parser_yaml.py
from ruamel.yaml import YAML
# Create a YAML instance
yaml = YAML()
# Read the YAML file
with open('example.yaml', 'r') as file:
data = yaml.load(file)
# Here you can modify `data` if needed, for example:
# data['new_key'] = 'new_value'
# Write the modified data back to the YAML file
with open('example_modified.yaml', 'w') as file:
yaml.dump(data, file)
print("YAML file read and written successfully.")
При переписывании окончания строк \ теряются, то есть \r\n теперь разделяется на новую строку.
❯ python ./parser_yaml.py
YAML file read and written successfully.
❯ diff example_modified.yaml example.yaml
0a1
> ---
2,6c3,6
< - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmode
< ut labore et dolore magna aliqua.\r\n\r\nUt enim ad minim veniam, quis nost. \r
< \n \r\n\r\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum
< dol nulla pariatur.\r\n\r\nExcepteur sint occaecat cupidatat non proident, sunt
< ."
---
> - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmode\
> \ ut labore et dolore magna aliqua.\r\n\r\nUt enim ad minim veniam, quis nost. \r\
> \n \r\n\r\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dol\
> \ nulla pariatur.\r\n\r\nExcepteur sint occaecat cupidatat non proident, sunt ."
Больше невозможно правильно проанализировать, например
❯ yq '.items[0].description' example.yaml
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmode ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nost.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dol nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt .
против
❯ yq '.items[0].description' example_modified.yaml
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmode ut labore et dolore magna aliqua.
t enim ad minim veniam, quis nost.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dol nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt .
Подробнее здесь: https://stackoverflow.com/questions/790 ... line-break