2015-08-22 3 views
0

Реферат:'{key:spec}'.format_map(dic) позволяет отформатировать значение от dic, к которому обращается key. spec говорит, как его форматировать. Однако, что, если я хочу, чтобы разделительный двоеточие было частью ключа? Как я должен сказать, что двоеточие не является разделителем, а следующие символы не являются спецификацией?'как избежать двоеточия в {xlink: href}'. Format_map (атрибуты)?

Подробнее: Я использую строковые шаблоны для преобразования атрибутов XML в другой текст. Скажем, у меня есть атрибуты элемента XML в словаре attributes. Один из них имеет ключ 'xlink:href' (буквальное имя атрибута). При использовании метода .format_map(), как должна записываться строка формата?

'{xlink:href}'.format_map(attributes) не работает. Python жалуется KeyError: 'xlink'. (href, вероятно, будет считаться плохой спецификацией, но исключение прекратит дальнейшую обработку.)

ответ

1

Невозможно избежать двоеточия в {xlink:href}.
You can't specify arbitrary keys in the replacement field:

replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" 
field_name  ::= arg_name ("." attribute_name | "[" element_index "]")* 
arg_name   ::= [identifier | integer] 
attribute_name ::= identifier 
element_index  ::= integer | index_string 
index_string  ::= <any source character except "]"> + 
conversion  ::= "r" | "s" | "a" 
format_spec  ::= <described in the next section> 
+0

Спасибо, J.F.! Я не был уверен, что ничего не забыл. Я работал над проблемой. ;) – pepr

Смежные вопросы