【问题标题】:How to align a python output [duplicate]如何对齐python输出[重复]
【发布时间】:2022-01-11 05:39:50
【问题描述】:

我有一些数据存储在 SQL 数据库表中。我需要从数据库中获取所有这些数据,并将其打印为 Python 输出,以人类可读的格式(如对齐表)。

您可以在下面看到我使用fetchall() 方法来获取这些数据并使用print 语句和2 个for 循环。

#executing all the records in the SQL query 
cursor.execute("SELECT * FROM game_log")

#Fetch results using fetchall() method
data=cursor.fetchall()

print("\n\nDate&Time\t\tName\tWord\tTurns Given\tTurns Used\tResults")

print("================================================================================")
for item in data:
    for value in item:
        print(value,end="\t")
    print()

您可以在下面看到其中一些显示为已对齐,但有些数据未显示为已对齐。

如何显示所有对齐的数据?

enter image description here

【问题讨论】:

    标签: python alignment


    【解决方案1】:

    从您的数据中使用 Pandas 创建一个数据框,然后将其打印出来:

    import pandas as pd
    
    column_names = ["Date&Time", "Name", "Word", "Turns Given", "Turns Used", "Results"]
    df = pd.DataFrame.from_records(data, columns = column_names)
    print(df)
    

    【讨论】:

    • 非常感谢。我仍然在学习python作为初学者。你的答案很明确。再次感谢您的宝贵时间。
    【解决方案2】:

    使用具有如下格式的 python f 字符串:

    >>> print(f'{2.2:10.2f}')
          2.20
    >>> print(f'{2.2:10.1f}')
           2.2
    

    查看此内容以供参考:https://docs.python.org/3/reference/lexical_analysis.html#f-strings

    【讨论】:

    • 感谢您帮助我,感谢您抽出宝贵时间。
    【解决方案3】:

    您可以计算每列的最大宽度(包括标题的宽度)并使用格式字符串来确保所有列打印相同的宽度:

    data = [ ["05/12/2021_20:12","kamal","football",8,8,"Lost"],
             ["05/12/2021_20:14","amal","australia",9,2,"Lost"]]
    
    headings = ["Date&Time","Name","Word","Turns Given","Turns Used","Results"]
    widths   = [max(map(len,map(str,col))) for col in zip(headings,*data)]
    
    print(*(f"{c:<{w}}" for c,w in zip(headings,widths)))
    print("="*sum(widths,len(widths)-1))
    for row in data:
        print(*(f"{c:<{w}}" for c,w in zip(row,widths)))
    

    输出:

    Date&Time        Name  Word      Turns Given Turns Used Results
    ===============================================================
    05/12/2021_20:12 kamal football  8           8          Lost   
    05/12/2021_20:14 amal  australia 9           2          Lost 
    

    【讨论】:

    • 非常感谢。作为初学者,我仍在学习 Python。你的回答也很清楚。感谢您抽出宝贵时间。
    猜你喜欢
    • 2020-04-12
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2022-01-07
    • 2016-11-01
    相关资源
    最近更新 更多