最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python如何以表格形式打印輸出的方法示例

 更新時間:2019年06月21日 08:25:02   作者:-漁人碼頭-  
這篇文章主要介紹了python如何以表格形式打印輸出的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

好久不見,風(fēng)水輪流轉(zhuǎn),我竟然寫寫寫python了

近日有個小需求,要求收集統(tǒng)計一些信息上報,并直接在后臺控制臺打印,寫入日志

為了美觀,需要以表格形式展現(xiàn)數(shù)據(jù),形如

雖說可以用 prettytable 實現(xiàn)這個效果,不過還得安裝這個庫,需求比較簡單就不考慮安裝第三方依賴了,所以得自己寫

照著這個圖,可以發(fā)現(xiàn) 幾個關(guān)鍵的實現(xiàn)點

1. 由數(shù)據(jù)項的各個屬性,整理出表頭

2. 計算每個屬性對應(yīng)的最大寬度,作為每列的寬度

3. 每列左右留一些空

4. 表頭上下,以及數(shù)據(jù)項末尾添加一行 --+-- 外圍

5. 循環(huán)每項,各項左右使用 | 做外圍

6. 需支持居中顯示或左對齊,這些可以通過計算列的總長度,再補空格來實現(xiàn)  利用 .center  .ljust 這些快捷方法

最終效果呢,還是闊以的

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
import json

# 數(shù)據(jù)項
timingInfo = [{
  'url': 'https://aaa.bbb.net/ccc/article/details/11',
  'duration(ms)': 121.12,
  'start(ms)': 222,
  'type': 'html',
  'size(kb)': 22.01
}, {
  'url': '/nd-element-in-list-to-another-list-of-strings',
  'duration(ms)': 121.22,
  'start(ms)': 3332,
  'type': 'css',
  'size(kb)': 22.01
}, {
  'url': '/path2',
  'duration(ms)': '121.12434234 (1212312.12 + 121212)',
  'start(ms)': 3332,
  'type': 'css',
  'size(kb)': 22.01
}, {
  'url': '/nd-element-in-list-to-another-list-of-strings',
  'duration(ms)': 121.42323423423,
  'start(ms)': 3332,
  'type': 'css',
  'size(kb)': 22.01
}, {
  'url': 'path2',
  'duration(ms)': '121.11 (111.11 + 20)',
  'start(ms)': 3332,
  'type': 'css',
  'size(kb)': 22.01
}]

# 提取表頭
keyHeader = timingInfo[0].keys()
# 存放每列的最大長度
keyMaxLen = {}

for item in timingInfo:
  for i,h in enumerate(keyHeader):
    # 計算每個屬性對應(yīng)的最大長度
    maxLen = max(len(h), len(str(item[h])))
    if keyMaxLen.get(h, None):
      maxLen = max(maxLen, keyMaxLen[h])
    keyMaxLen[h] = maxLen

print keyMaxLen

#
def printGroup(group):
  for item in group:
    print '\r'
    for i,h in enumerate(keyHeader):
      itemLen = keyMaxLen.get(h, str(h)) + 4
      # 補空位并居中
      s = str(item[h]).center(itemLen, '-' if item[h] == '-' else ' ')

      icon = '|'
      if item[h] == '-':
        icon = '+'

      s = (icon if i == 0 else '') + s[1:len(s)] + icon
      print s,

  print '\r'

print '\n[timing info]'

# 占位項
tag = {}
for i,h in enumerate(keyHeader):
  tag[h] = '-'
# 前后添上
timingInfo.insert(0, tag)
timingInfo.append(tag)

# 第一行需要先單獨打印出來
printGroup([tag])

# 再單獨打印表頭
for i,h in enumerate(keyHeader):
  # 留空位4
  itemLen = keyMaxLen.get(h, str(h)) + 4
  # 快捷居中并補空位 左對齊可使用 ljust之類
  s = h.center(itemLen)
  s = ('|' if i == 0 else '') + s[1:len(s)] + '|'
  print s,

# 打印后面的數(shù)據(jù)項,包括兩條 --+--占位
printGroup(timingInfo)

上面這個是直接打印出來的,print 默認(rèn)一行打印,要做到按項拼接,就得在print后面加個逗號,

另外,這樣只能在控制臺輸出,而如果要打印到日志中,就得換種做法了

使用字符串拼接,整個輸出就是一個字符串,從頭拼到末尾就ok了

當(dāng)然嫌麻煩的話,也可以直接裝了prettytable 直接用也行

import prettytable as pt

# tb = pt.PrettyTable( ["City name", "Area", "Population", "Annual Rainfall"])
tb = pt.PrettyTable()
tb.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
tb.add_row(["Adelaide",1295, 1158259, 600.5])
tb.add_row(["Brifasdfae",5905, 1857594, 1146.4])
tb.add_row(["Darwin", 112, 120900, 171423423423423424.7])
tb.add_row(["Hobart", 1357, 205556,619.5])

print(tb)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 通過CartPole游戲詳解PPO?優(yōu)化過程

    通過CartPole游戲詳解PPO?優(yōu)化過程

    這篇文章主要為大家介紹了通過CartPole游戲詳解PPO?優(yōu)化過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 跟老齊學(xué)Python之集合(set)

    跟老齊學(xué)Python之集合(set)

    本文主要內(nèi)容是要向各位介紹一種新的數(shù)據(jù)類型:集合(set).徹底暈倒了,到底python有多少個數(shù)據(jù)類型呢?又多出來了一個.
    2014-09-09
  • Python logging模塊handlers用法詳解

    Python logging模塊handlers用法詳解

    這篇文章主要介紹了Python logging模塊handlers用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • python實現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼

    python實現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼

    今天小編就為大家分享一篇python實現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python ForMaiR實現(xiàn)自定義規(guī)則的郵件自動轉(zhuǎn)發(fā)工具

    python ForMaiR實現(xiàn)自定義規(guī)則的郵件自動轉(zhuǎn)發(fā)工具

    這篇文章主要為大家介紹了python ForMaiR實現(xiàn)自定義規(guī)則的郵件自動轉(zhuǎn)發(fā)工具示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 淺析Python實現(xiàn)DFA算法

    淺析Python實現(xiàn)DFA算法

    DFA全稱為Deterministic Finite Automaton,即確定有窮自動機。特征:有一個有限狀態(tài)集合和一些從一個狀態(tài)通向另一個狀態(tài)的邊,每條邊標(biāo)記有一個符號,其中一個狀態(tài)是初態(tài),某些狀態(tài)是終態(tài)。不同于不確定的有限自動機,DFA中不會有從同一狀態(tài)出發(fā)的兩條邊標(biāo)志有相同的符號
    2021-06-06
  • python 調(diào)用釘釘機器人的方法

    python 調(diào)用釘釘機器人的方法

    今天小編就為大家分享一篇python 調(diào)用釘釘機器人的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 基于BCEWithLogitsLoss樣本不均衡的處理方案

    基于BCEWithLogitsLoss樣本不均衡的處理方案

    這篇文章主要介紹了BCEWithLogitsLoss樣本不均衡的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • pygame實現(xiàn)彈球游戲流程

    pygame實現(xiàn)彈球游戲流程

    這篇文章主要介紹了pygame實現(xiàn)彈球游戲流程,彈球游戲(Pinball Pro)是安卓手機上排名第一的彈球游戲,真實再現(xiàn)了一直以來最經(jīng)典的彈珠臺游戲的玩法
    2023-01-01
  • Python實現(xiàn)最常見加密方式詳解

    Python實現(xiàn)最常見加密方式詳解

    這篇文章主要介紹了Python實現(xiàn)最常見加密方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論

北流市| 体育| 沁阳市| 盱眙县| 雷波县| 新民市| 泌阳县| 中方县| 沂水县| 云阳县| 彩票| 柳河县| 岳普湖县| 垣曲县| 子洲县| 田林县| 突泉县| 印江| 北碚区| 余江县| 阳高县| 新巴尔虎右旗| 固始县| 梨树县| 宝鸡市| 花垣县| 鸡泽县| 囊谦县| 西林县| 叶城县| 舟山市| 保德县| 张家口市| 金秀| 景泰县| 曲阜市| 特克斯县| 青海省| 万年县| 芜湖县| 娄底市|