如何在f字符串中使用换行符'\ n'格式化Python 3.6中的输出?

发布于 2021-01-29 18:17:33

我想知道如何使用f字符串以Pythonic方式格式化这种情况:

names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)

问题是'\'不能在{...}f字符串的表达式部分内使用。预期产量:

Winners are:
Adam
Bob
Cyril
关注者
0
被浏览
171
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    你不能 反斜杠不能出现在花括号内{};这样做会导致SyntaxError

    >>> f'{\}'
    SyntaxError: f-string expression part cannot include a backslash
    

    这是在PEP中为f字符串指定的:

    反斜线可能不会出现在f字符串的表达式部分内,[…]

    一种选择是先'\n'命名,然后再.joinf-string内进行命名;也就是说,不使用文字:

    names = ['Adam', 'Bob', 'Cyril']
    nl = '\n'
    text = f"Winners are:{nl}{nl.join(names)}"
    print(text)
    

    结果是:

    Winners are:
    Adam
    Bob
    Cyril
    

    @wim指定的另一个选项是chr(10)用来获取\n返回值,然后在此加入。f"Winners are:\n{chr(10).join(names)}"

    当然,还有另一个是要'\n'.join预先添加相应的名称:

    n = "\n".join(names)
    text = f"Winners are:\n{n}"
    

    结果相同。

    注意:

    这是f-string和之间的细微差别之一str.format。在后者中,您可以始终使用标点符号,只要打开包含这些键的相应古怪字典即可:

    >>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
    "Hello World!"
    

    (请不要这样做。)

    在前一种格式中,标点符号是不允许的,因为您不能使用它们的标识符。


    撇开:我肯定会选择printformat,因为其他答案都建议您选择。我提供的选项仅在由于某些原因 必须 使用f字符串的情况下适用。

    仅仅因为有些新事物,并不意味着您应该尝试用它做一切;-)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看