Вы можете подключиться к загрузке / построению скалярной строки в двойных кавычках, вам, вероятно, придется установить yaml.preserve_quotes
, а затем вести себя как загрузчик для сложенных скаляров.
Но это гораздо проще в первую очередь используйте сложенные скаляры YAML, так как это выглядит как ваш ввод, циклические переходы из коробки. И отличается только в загруженном значении тем, что нет пробела (который, я надеюсь, не имеет значения):
import sys
import ruamel.yaml
yaml_str = """
mydict:
command: "my_shell_script
--firstarg
--second
--third
.......
fourth
"
altdict:
command: >-
my_shell_script
--firstarg
--second
--third
.......
fourth
"""
yaml = ruamel.yaml.YAML()
data = yaml.load(yaml_str)
for k in data:
print(repr(data[k]['command']))
yaml.dump(data, sys.stdout)
, что дает:
'my_shell_script --firstarg --second --third ....... fourth '
'my_shell_script --firstarg --second --third ....... fourth'
mydict:
command: 'my_shell_script --firstarg --second --third ....... fourth '
altdict:
command: >-
my_shell_script
--firstarg
--second
--third
.......
fourth
Как вы можете видеть в сложенном виде скалярные дампы в качестве входных данных.
Если вы оставите -
из >-
, вы получите (одну) новую строку в конце ваших загруженных данных.