New submission from Tommy Beadle: Support for unnumbered fields in string.Formatter.format was added in http://bugs.python.org/issue13598, however, it does not support accessing an index or attribute of an unnumbered field like str.format does. Instead, it raises an unhelpful "KeyError: ''":
In [1]: import string In [2]: fmt = string.Formatter() In [3]: fmt.format('{[0]}', ['a', 'b']) --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-3-a923004fe8e8> in <module>() ----> 1 fmt.format('{[0]}', ['a', 'b']) /usr/lib64/python2.7/string.pyc in format(*args, **kwargs) 557 raise TypeError("format() missing 1 required positional " 558 "argument: 'format_string'") --> 559 return self.vformat(format_string, args, kwargs) 560 561 def vformat(self, format_string, args, kwargs): /usr/lib64/python2.7/string.pyc in vformat(self, format_string, args, kwargs) 561 def vformat(self, format_string, args, kwargs): 562 used_args = set() --> 563 result = self._vformat(format_string, args, kwargs, used_args, 2) 564 self.check_unused_args(used_args, args, kwargs) 565 return result /usr/lib64/python2.7/string.pyc in _vformat(self, format_string, args, kwargs, used_args, recursion_depth) 583 # given the field_name, find the object it references 584 # and the argument it came from --> 585 obj, arg_used = self.get_field(field_name, args, kwargs) 586 used_args.add(arg_used) 587 /usr/lib64/python2.7/string.pyc in get_field(self, field_name, args, kwargs) 644 first, rest = field_name._formatter_field_name_split() 645 --> 646 obj = self.get_value(first, args, kwargs) 647 648 # loop through the rest of the field_name, doing /usr/lib64/python2.7/string.pyc in get_value(self, key, args, kwargs) 603 return args[key] 604 else: --> 605 return kwargs[key] 606 607 KeyError: '' The attached patch adds this functionality. aronancher asked in http://bugs.python.org/issue13598#msg218114 if the original patch was going to make it in to python 2.7. Perhaps that could get a look? ---------- components: Library (Lib) messages: 268452 nosy: tbeadle priority: normal severity: normal status: open title: string.Formatter does not support key/attribute access on unnumbered fields type: behavior versions: Python 2.7, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27307> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com