我正在尝试使用 print 函数打印表格中的每一行以打印每一行。
select_stmt = "SELECT user,password FROM account"
mycursor.execute(select_stmt)
myresult = mycursor.fetchall()
for row in myresult:
print (row)
目前它以一种随意的方式打印:
(None, 'A***9****')
(None, None)
('usertest', 'pwtest')
如何填充每一列以使其看起来更清晰?谢谢
最佳答案
两列
鉴于两列永远不会超过 24 个字符,您可以使用例如:
for user, pwd in myresult:
print('{: <20} {}'.format(user, pwd))
或者如果事先不知道,我们可以先确定第一列的最大大小:
len_user = max(map(lambda x: len(str(x[0])), myresult))
for user, pwd in myresult:
print('{} {}'.format(str(user).ljust(len_user), pwd))
对于示例数据,这会产生:
>>> len_user = max(map(lambda x: len(str(x[0])), myresult))
>>> for user, pwd in myresult:
... print('{} {}'.format(str(user).ljust(len_user), pwd))
...
None A***9****
None None
usertest pwtest
您可以在格式中的两个 {}
之间添加更多间距,以增加元素之间的间距,例如:
>>> for user, pwd in myresult:
... print('{} {}'.format(str(user).ljust(len_user), pwd))
...
None A***9****
None None
usertest pwtest
多列
对于多列,我们可以按照相同的过程,使用numpy计算列最大值:
import numpy as np
lens = np.max([[len(str(xi)) for xi in x] for x in myresult], axis=0)
myformat = ' '.join(['{}']*len(lens))
for col in myresult:
print(myformat.format(*map(str.ljust, map(str, col), lens)))
关于Python - 如何填充 mysql 表的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727547/