【发布时间】:2021-11-09 14:29:39
【问题描述】:
将详细信息打印到控制台的最佳方式是什么?
我通常使用 f 字符串作为控制台输出,例如print(f"{data=}") 非常方便。
但是我不能做连接语句,因为 f 字符串表达式部分不能包含反斜杠:
# This does not work
print(f"{'\n'.join(['1', '2', '3'])}")
即使反斜杠确实有效,但由于引号类型不同,我觉得这真的很混乱。
我可以想出多种方法来解决这个问题,但是他们觉得不够干净:
示例代码
data = [["1", "2", "3"], ["cat", "dog"], ["item1", "item2"]]
# Approach 1
print("Current data:\n\t{}".format("\n\t".join(["{} -> {}".format(i, " ".join(data[i])) for i in range(len(data))])))
# Approach 2
print("Current data:\n\t" + "\n\t".join(f"{i} -> " + " ".join(data[i]) for i in range(len(data))))
# Approach 3
s = "Current data:"
for i in range(len(data)):
tmp = " ".join(data[i])
s += f"\n\t{i} -> {tmp}"
print(s)
输出
Current data:
0 -> 1 2 3
1 -> cat dog
2 -> item1 item2
Current data:
0 -> 1 2 3
1 -> cat dog
2 -> item1 item2
Current data:
0 -> 1 2 3
1 -> cat dog
2 -> item1 item2
目前我通常尽可能使用 f-strings,否则我将使用第一种方法。
这方面的最佳做法是什么?
【问题讨论】:
-
可以使用
os.linesep.join代替'\n'.join吗?至少对于第一个例子
标签: python string console output pep