f-string
a string literal with a prefix of fr, Fr, rf of Rf behaves as if with a prefix of strformat.fmt.
and f"xxx" is different, where the escaped literals in string will be interpreted.
Example:
import src/pylib/pystring/fstring assert fr"\n" == "\\n" assert f"\n" == "\n" let s = "asd" assert f"[{s}]" == "[asd]" assert not compiles(fr s)
Templates
- template f(s: string{lit}): PyStr 
- 
    
    Python F-String. Not the same as Nim's fmt"xxx" as that's equal to fmt r"xxx", a.k.a fr"xx" in Python Any escape-translation error is reported at compile-time, with information of filename and line number Unicode\Uhhhhhhhh is supported as Python's, while Nim's \U{...} is unsupported but \u{...} is reserved oct\\[0-7]{1,3} in f-string will be interpreted as octal digit as Python, instead of decimal as Nim. multilinethe following shows the deature of Nim's multiline string which is different from Python's assert "" == """ """ ## Unicode Names `\N{name}` is not supported yet. Example: assert f"\n" == "\n" assert f"123{'a'}\n456" == "123a\n456" assert f"\U0001f451" == "👑" assert f"\10" == "\x08" # nim's "\10" means chr(10) assert f"""\t123 """ == "\t123\n" # even if the source code's newline is crlf. Source Edit