将元组列表写入txt文件时对齐文本
我正在尝试将元组列表写入 txt 文件并将其与左侧对齐。(需要用制表符分隔)这是元组列表:
list1 = [(1, "Banana", "Yellow"), (2 , "Apple", "Red"), (3, "Carrot", "Orange")]
这是我写的代码:
def write_fruit(list1,new_file):
if not isinstance(list1, list):
raise ValueError("First input must be a list.")
header = "Num Fruit Color"
with open(new_file, "w") as output:
output.write(header + "n")
for line in list1:
if not isinstance(line[1], str):
raise ValueError("Second input must be a str.")
vals = " ".join(str(i) for i in line)
output.write(vals + "n")
print(write_fruit(fruit_list, "fruit_list.txt"))
我的 txt 文件如下所示:
Num Fruit Color
1 Banana Yellow
2 Apple Red
3 Carrot Orange
我需要它与左边对齐,我看到一些看起来像 {: >20} 的建议,但并没有真正理解它背后的逻辑,所以如果有不同的方法,我会很高兴。
回答
我建议基本的Python格式与"{:<5}{:10}{:10}n"
-
{:<5}
表示最小长度为 5,带空格填充,左对齐,when{:>5}
表示右对齐 -
{:10}
表示最小长度为 10,带空格填充。
默认数字对齐是正确的,所以我们必须强制左对齐,而字符串的默认值已经是左对齐
def write_fruit(list1, new_file):
if not isinstance(list1, list):
raise ValueError("First input must be a list.")
template = "{:<5}{:10}{:10}n"
header = "Num Fruit Color".split()
with open(new_file, "w") as output:
output.write(template.format(*header))
for line in list1:
if not isinstance(line[1], str):
raise ValueError("Second input must be a str.")
output.write(template.format(*line))
给予
Num Fruit Color
1 Banana Yellow
2 Apple Red
3 Carrot Orange