gpt4 book ai didi

python - 在Python中格式化字符串

转载 作者:行者123 更新时间:2023-11-30 22:33:20 25 4
gpt4 key购买 nike

我想以表格格式写入文件,以下是我到目前为止编写的代码。

file_out=open("testing_string","w")
file_out.write("{0:<12} {1:<20} {2:<30}\n".format("TUPLE","LOGFILE STATUS","FSDB STATUS"))
file_out.write("{0:12}".format("Check"))
file_out.write("{0:12}".format("_5"))
file_out.close()

测试字符串看起来像这样。

TUPLE        LOGFILE STATUS       FSDB STATUS                   
Check _5

问题是我希望_5带有支票。请注意,我无法将检查与 _5 连接起来,因为检查首先打印在文件中,然后根据某些逻辑填充日志文件状态 FSDB 状态。如果我无法填写状态,那么我会检查是否必须附加 _5。因此,我无法连接字符串。然后如何在支票旁边打印_5?

最佳答案

在完美的世界中,您不会执行以下答案中给出的操作。它很老套,容易出错,而且非常奇怪。在完美的世界中,您会在实际写入磁盘之前弄清楚如何写出您想要的内容。我认为您考虑这一点的唯一原因是您正在维护一些旧的、硬邦邦的遗留代码,并且无法“以正确的方式”做事。

<小时/>

这不是最优雅的答案,但您可以使用退格字符覆盖以前编写的内容。

with open('test.txt', 'w') as file_out:
file_out.write("{0:<12} {1:<20} {2:<30}\n".format("TUPLE","LOGFILE STATUS","FSDB STATUS"))
file_out.write("{0:12}".format("Check"))
backup_amount = 12 - len("Check")
file_out.write("\b" * backup_amount)
file_out.write("{0:12}".format("_5"))

输出:

TUPLE        LOGFILE STATUS       FSDB STATUS                   
Check_5

这只适用于这种特定情况,因为我们用新字符完全覆盖以前写入的字符 - 退格键几乎备份了光标,但实际上并没有覆盖以前写入的数据。观察:

with open('test.txt', 'w') as f:
f.write('hello')
f.write('\b\b')
f.write('p')

输出:

helpo

由于我们退格了两个字符但只写了一个,所以原来的第二个字符仍然存在。您必须手动编写 ' ' 字符来覆盖这些字符。

由于这个警告,您可能不得不开始弄乱格式代码的长度(即 '{0:12}' 可能需要变为 '{0:5 }' 或其他内容)当您添加 '_5' 时。它会变得困惑。

关于python - 在Python中格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com