YAML中的字符串插值

YAML中的字符串插值,yaml,string-interpolation,template-variables,Yaml,String Interpolation,Template Variables,在Perl中,我可以执行以下操作: my $home = "/home"; my $alice = "$home/alice"; Alice: <%=home%>/alice 我可以在YAML中执行以下操作吗: Home: /home Alice: $Home/alice 所以“Alice”实际上是/home/Alice最后?不幸的是,你运气不好。要执行所需操作,您需要从视图文件(或任何位置)传入$home,并将其插入yaml条目中,这可能类似于: Alice: ! '%{ho

在Perl中,我可以执行以下操作:

my $home = "/home";
my $alice = "$home/alice";
Alice: <%=home%>/alice
我可以在YAML中执行以下操作吗:

Home: /home
Alice: $Home/alice

所以“Alice”实际上是
/home/Alice
最后?

不幸的是,你运气不好。要执行所需操作,您需要从视图文件(或任何位置)传入
$home
,并将其插入yaml条目中,这可能类似于:

Alice: ! '%{home}/Alice' 

请参阅,以获得与您的问题几乎完全相同的详细答案。

我最终使用了,但无可否认,这不是YAML解决方案,而是特定于Perl的解决方案。它允许YAML包含插值的
$var
s。

您应该使用ERB模板

你可以这样写:

my $home = "/home";
my $alice = "$home/alice";
Alice: <%=home%>/alice

我最近也在为Python寻找这一点,并通过Github上令人敬畏的yaml repo偶然发现了
动态yaml

链接YAML Github回购: 链接Python的动态YAML:

希望这有帮助

编辑:由于评论是正确的,链接可能会断开,下面是一个简单的示例:

如果您的YAML文件如下所示:

house:
    street: cool_street_name
    number: 45
    street_and_number: {house.street}-{house.number}
使用python-m pip Install dynamic_yaml安装dynamic_yaml以运行以下脚本

import dynamic\u yaml
将打开的(路径_到_yaml_文件,'r')作为f:
数据=动态荷载(f)
然后你会得到:

print(数据['house']['street\'u和\'u number']
>>cool_street_name-45
使用,您可以这样编写示例:

Home: /home
Alice: !? .Home + '/alice'


免责声明:我是Yglu的作者。

另请参见:我也从评论中注意到了这个软件包(未经测试):嗨,虽然链接是分享知识的好方法,但如果将来它们被破坏了,它们不会真正回答问题。在回答中添加回答问题的链接的基本内容。如果内容太复杂或太大而不适合此处,请描述建议解决方案的总体思路。请记住始终保留原始解决方案网站的链接引用。见: