diff options
Diffstat (limited to 'Lib/string.py')
-rw-r--r-- | Lib/string.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Lib/string.py b/Lib/string.py index e7b692d7f79..f3365c67fb4 100644 --- a/Lib/string.py +++ b/Lib/string.py @@ -112,7 +112,10 @@ class Template(metaclass=_TemplateMetaclass): # Check the most common path first. named = mo.group('named') or mo.group('braced') if named is not None: - return str(mapping[named]) + val = mapping[named] + # We use this idiom instead of str() because the latter will + # fail if val is a Unicode containing non-ASCII characters. + return '%s' % (val,) if mo.group('escaped') is not None: return self.delimiter if mo.group('invalid') is not None: @@ -139,7 +142,9 @@ class Template(metaclass=_TemplateMetaclass): named = mo.group('named') or mo.group('braced') if named is not None: try: - return str(mapping[named]) + # We use this idiom instead of str() because the latter + # will fail if val is a Unicode containing non-ASCII + return '%s' % (mapping[named],) except KeyError: return mo.group() if mo.group('escaped') is not None: |