我想知道如何使用 f 字符串以 Pythonic 方式格式化这种情况:
names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
问题是 '\'
不能在 f 字符串的 {...}
表达式部分中使用。预期输出:
Winners are:
Adam
Bob
Cyril
原文由 malmed 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道如何使用 f 字符串以 Pythonic 方式格式化这种情况:
names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
问题是 '\'
不能在 f 字符串的 {...}
表达式部分中使用。预期输出:
Winners are:
Adam
Bob
Cyril
原文由 malmed 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不需要 f-strings 或其他格式化程序来打印带有分隔符的字符串列表。只需使用 sep
关键字参数 print()
:
names = ['Adam', 'Bob', 'Cyril']
print('Winners are:', *names, sep='\n')
输出:
Winners are:
Adam
Bob
Cyril
也就是说,在这里使用 str.join()
/ str.format()
可以说比任何 f-string 变通方法更简单、更易读:
print('\n'.join(['Winners are:', *names]))
print('Winners are:\n{}'.format('\n'.join(names)))
原文由 Eugene Yarmash 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.3k 阅读✓ 已解决
4 回答3.7k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.7k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
你不能。花括号内不能出现反斜杠
{}
;这样做会导致SyntaxError
:这在 F 字符串的 PEP 中指定:
一种选择是将
'\n'
分配给一个名称,然后将.join
分配给f
字符串中的名称;也就是说,不使用文字:结果是:
@wim 指定的另一个选项是使用
chr(10)
获取\n
返回然后加入那里。f"Winners are:\n{chr(10).join(names)}"
当然,还有一个方法是预先添加
'\n'.join
然后相应地添加名称:这导致相同的输出。
笔记:
这是
f
字符串和str.format
之间的细微差别之一。在后者中,您始终可以使用标点符号,前提是解压缩了包含这些键的相应古怪字典:(请不要这样做。)
在前者中,标点符号是不允许的,因为您不能拥有使用它们的标识符。
旁白:我肯定会选择
print
或format
,正如其他答案所建议的那样。我给出的选项仅在您出于某种原因 必须 使用 f 弦时才适用。仅仅因为某些东西是新的,并不意味着你应该尝试用它做所有事情;-)