目前我正在尝试将SQLite数据库文件中的一些数据输出到命令行,但数据似乎没有正确显示。
目前,当我输入要显示的数据时,它输出如下:
Student Table
StudentID Name Year
1 Dan 13
2 Jake 13
3 Joe 13
4 David 13
我希望所有名字都正确排列或至少居中,但我无法弄清楚如何做到这一点!
格式代码如下:
def view():
con = lite.connect('records.db')
with con:
cur = con.cursor()
cur.execute('SELECT * FROM Student')
col_names = [cn[0] for cn in cur.description]
rows = cur.fetchall()
print("%20s" % ("Student Table"))
print("{0:1} {1:^10} {2:20}".format(col_names[0], col_names[1], col_names[2]))
for row in rows:
print("%5s %10s %7s" % (row))
display = menu.Menu.DisplayMenu("Student")
choice = GetMenuChoice()
ValidateMenuChoice(choice)
main(choice)
任何帮助将不胜感激!
答案 0 :(得分:0)
在整个代码中标准化新式格式(str.format
而不是%
)可能是一个好主意,而不是混合和匹配。这将改变,特别是这一行:
print("%5s %10s %7s" % (row))
到此:
print("{:5} {:10} {:7}".format(*row))
然后,您可以调整该格式字符串以进行对齐。这样:
print("{:>5} {:>10} {:>7}".format(*row))
将右对齐所有三列。 '>'表示“右对齐此字段” - 如果您希望将其保留为默认对齐,则可以将其从其他两列中删除。
你已经为列标题做了类似的事情,除了你把中间的那个放在中间而不是右对齐它。您可以在此处重复使用该字符串:
print("{:5} {:^10} {:7}".format(*row))
(请注意 :
之前的数字是可选的)。为了减少代码重复次数,您可以将该字符串存储在变量中并执行以下操作:
columns = "{:5} {:10} {:7}"
# get col_names
print("{:20}".format("Student Table")
print(columns.format(*col_names))
for row in rows:
print(columns.format(*row))