我需要拆分文件名和扩展名:foo.bar
$('[data-name]').each(function(){
var name = $(this).attr('data-name');
var color =$(this).attr('data-clr');
$(this).text(name + '/' + color);
});
使用splitext我得到一个包含2个元素的列表。
- name: split file
set_fact:
myvar: "{{ myfile | splitext | to_json }}"
我必须使用第一个,但我不能:
ok: [localhost] => {
"msg": [
"foo",
".bar"
]
}
- name: test
debug:
msg="{{ myvar[0] }}"
出了什么问题?
答案 0 :(得分:2)
将to_json
过滤器替换为list
过滤器:
- name: split file
set_fact:
myvar: "{{ myfile | splitext | list }}"
to_json
生成一个JSON字符串(["foo", ".bar"]
),因为字符串在内部表示为字符列表,myvar[0]
引用其第一个字符([
)。
debug
输出在此示例中令人困惑,因为msg
将被模板化并显示,就像它是一个列表一样。
您始终可以使用myvar | type_debug
检查类型,对于您将看到unicode
(或AnsibleUnicode
)的字符串。