如何在f字符串中使用换行符'\ n'格式化Python 3.6中的输出?
我想知道如何使用f字符串以Pythonic方式格式化这种情况:
names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
问题是'\'
不能在{...}
f字符串的表达式部分内使用。预期产量:
Winners are:
Adam
Bob
Cyril
-
你不能 反斜杠不能出现在花括号内
{}
;这样做会导致SyntaxError
:>>> f'{\}' SyntaxError: f-string expression part cannot include a backslash
这是在PEP中为f字符串指定的:
反斜线可能不会出现在f字符串的表达式部分内,[…]
一种选择是先
'\n'
命名,然后再.join
在f
-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!"
(请不要这样做。)
在前一种格式中,标点符号是不允许的,因为您不能使用它们的标识符。
撇开:我肯定会选择
print
或format
,因为其他答案都建议您选择。我提供的选项仅在由于某些原因 必须 使用f字符串的情况下适用。仅仅因为有些新事物,并不意味着您应该尝试用它做一切;-)