我有一个关于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()
答案 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
应该注意的是,以上所有示例仅显示了一般概念,并且不验证或转换所提供的参数输入。尽管如此,我希望这会对你有所帮助。