Added some text about escaping quote chars, and about raw f-strings.
This commit is contained in:
parent
5189173b1e
commit
ebbbc136c1
28
pep-0498.txt
28
pep-0498.txt
|
@ -183,9 +183,9 @@ for strings should be trivially modifiable to recognize f-strings
|
|||
(parsing within an f-string is another matter, of course).
|
||||
|
||||
Once tokenized, f-strings are decoded. This will convert backslash
|
||||
escapes such as ``'\n'``, ``'\xhh'``, ``'\uxxxx'``, ``'\Uxxxxxxxx'``,
|
||||
and named unicode characters ``'\N{name}'`` into their associated
|
||||
Unicode characters [#]_.
|
||||
escapes such as ``'\n'``, ``'\"'``, ``"\'"``, ``'\xhh'``,
|
||||
``'\uxxxx'``, ``'\Uxxxxxxxx'``, and named unicode characters
|
||||
``'\N{name}'`` into their associated Unicode characters [#]_.
|
||||
|
||||
Up to this point, the processing of f-strings and normal strings is
|
||||
exactly the same.
|
||||
|
@ -256,6 +256,28 @@ resulting string value is to double the brace::
|
|||
>>> f'{{{4*10}}}'
|
||||
'{40}'
|
||||
|
||||
Like all raw in Python, no escape processing is done for raw
|
||||
f-strings::
|
||||
|
||||
>>> fr'x={4*10}\n'
|
||||
'x=40\\n'
|
||||
|
||||
Due to Python's string tokenizing rules, the f-string
|
||||
``f'abc {a['x']} def'`` is invalid. The tokenizer parses this as 3
|
||||
tokens: ``f'abc {a['``, ``x``, and ``']} def'``. Just like regular
|
||||
strings, this cannot be fixed by using raw strings. There are a number
|
||||
of correct ways to write this f-string: with escaped single quotes::
|
||||
|
||||
f'abc {a[\'x\']} def'
|
||||
|
||||
With a different quote character::
|
||||
|
||||
f"abc {a['x']} def"
|
||||
|
||||
Or with triple quotes::
|
||||
|
||||
f'''abc {a['x']} def'''
|
||||
|
||||
Code equivalence
|
||||
----------------
|
||||
|
||||
|
|
Loading…
Reference in New Issue