用tab制作一个python表

时间:2017-12-18 14:11:09

标签: python python-3.x tabs

我有一个关于Python 3.X的问题。我能用.format创建一个漂亮的“表”,但问题是我是否可以使用标签看起来与格式相似?

file = open("students.csv", "r")
students= []
for i in file:
    i= i.rstrip()
    i_sublist = i.split(",")
    students.append(i_sublist)


print("Content")
print("{0:15} {1:15} {2:15}".format("Name", "Surname", "Grade"))
print("{0:15} {1:15} {2:15}".format("-----", "-------", "---"))
for i in students:
    for j in i:
        print("{0:15}".format(j),"",end="")
    print()
file.close()

1 个答案:

答案 0 :(得分:0)

虽然我没有完全理解你的任务是什么(尤其是关于标签),但我会尝试展示一种不使用.format方法来构建类似表格的方法。假设学生列表如下:

students = [('Arc', 'Circle', 'A'), ('Numan', 'Tuman', 'B'), ('Zeta', 'Beta', 'D'),
            ('Raptor', 'Strange', 'A'), ('Crazy', 'Bear', 'C')]

使用其他方法

然后以下函数将打印类似的表:

def context(students):
    preamble = [("Name", "Surname", "Grade"), 
                 ("----", "-------", "-----")]
    message = preamble + students   # join two lists together
    print("Context")
    for line in message:
        print(*(elem.ljust(15) for elem in line))  # left justify each element in sublists

来自文档:

  

S.ljust(width[, fillchar]) -> str
  返回S在长度为width的Unicode字符串中左对齐。填充使用指定的fill字符完成(默认为空格)。

您自己的制表工具

如果您要实现自己的制表符的任务,可以通过以这种方式提供帮助函数来完成:

def tabulator(text, min_field=15):
    tabs_to_append = min_field - len(text)  
    return_string = (text if (tabs_to_append <= 0) else text + " "*tabs_to_append)
    return return_string 

def context_tabulator(students):
    preamble = [("Name", "Surname", "Grade"), 
                 ("----", "-------", "-----")]
    message = preamble + students   # join two lists together
    print("Context")
    for line in message:
        print(*(tabulator(elem, 15) for elem in line))  

如果您将其作为context_tabulator(students)调用,它将生成以下表格:

Context
Name            Surname         Grade          
----            -------         -----          
Arc             Circle          A              
Numan           Tuman           B              
Zeta            Beta            D              
Raptor          Strange         A     
Crazy           Bear            C   

应该注意的是,以上所有示例仅显示了一般概念,并且不验证或转换所提供的参数输入。尽管如此,我希望这会对你有所帮助。