python - 将元组列表写入 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,带空格填充,左对齐,当{:>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
推荐阅读
- sql - 获取具有两个日期列的所有行,其中日期在指定间隔内或之间
- flutter - Flutter/Dart- 在 null 上调用了方法“replaceAll”。如何检查字符串是否存在?
- javascript - 我怎样才能延迟表单操作?
- swift - 观察者和图像获取无法按预期工作
- html - 我可以在 html 中做正则表达式来匹配 css 和 js 吗?
- sql - 如果前两列的答案匹配,则创建一个返回“是”的列
- javascript - 如何移动我的 h3 元素以与 span 元素垂直对齐?
- java - 使用 Tabula 使用 Python 读取 pdf 时出现 Java 错误
- f# - FSharp.Data JsonProvider 的重命名类型
- asp.net-mvc - 事件驱动架构数据库处理