如何在控制台上打印详细信息?我通常使用f-string进行控制台输出,例如print(f"{data=}")
非常方便。但是,由于f-string表达式部分不能包含反斜杠,因此我无法使用join语句。
# 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
吗?至少对于第一个示例是这样。 - Iain Shelvington