我有一个我在Ansible 2.0.2中难以解析的字符串。字符串的格式为:
“{u'tens_under_25':u'0',u'tens_over_hundred':u'5', u'fifties_over_hundred':u'1',u'tens_over_25':你好','数百': u'1',u'fifties_under_hundred':u'0',u'thousands':u'1'}“
此字符串是实用程序的std_out,用于从数字中解析这些值。使用寄存器命令将此字符串捕获到变量“response”中。 'response'是一个字典,其元素'std_out'包含感兴趣的字符串。
我正在尝试使用Ansible regex_replace过滤器提取元素,如
- set_fact:
thousands: "{{response['stdout'] | regex_replace('.*thousands\': u\'(.*)\'.*', '\\1')}}"
这给出了错误:
TemplateSyntaxError: unexpected char u'\\' at 66
我不能为我的生活在这里找到语法错误,希望有人比我有更好的眼睛。
感谢您的帮助。
答案 0 :(得分:0)
所以,你可以在这里使用一个肮脏的技巧。您的命令输出是一个Python对象转储,Ansible碰巧有特殊的代码识别它并将其反序列化回适当的数据结构。所以,如果你这样做:
- set_fact:
response_dict: "{{ response.stdout }}"
...你最终会得到一个名为response_dict
的字典。然后,您可以获得thousands
这样的值:
- debug:
var: response_dict.thousands