最新国产好看的视频,伊人天堂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 實(shí)現(xiàn)這個效果,不過還得安裝這個庫,需求比較簡單就不考慮安裝第三方依賴了,所以得自己寫

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

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

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

3. 每列左右留一些空

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

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

6. 需支持居中顯示或左對齊,這些可以通過計算列的總長度,再補(bǔ)空格來實(shí)現(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
      # 補(bǔ)空位并居中
      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)

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

# 再單獨(dú)打印表頭
for i,h in enumerate(keyHeader):
  # 留空位4
  itemLen = keyMaxLen.get(h, str(h)) + 4
  # 快捷居中并補(bǔ)空位 左對齊可使用 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實(shí)現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

遂平县| 庆城县| 高碑店市| 石阡县| 汝南县| 东兴市| 中卫市| 连江县| 石渠县| 信丰县| 余庆县| 车险| 泗水县| 绥阳县| 亚东县| 江华| 湄潭县| 突泉县| 通渭县| 铁岭市| 孝昌县| 木里| 宕昌县| 双桥区| 鞍山市| 明水县| 宁远县| 六盘水市| 乌拉特前旗| 罗山县| 平乐县| 西青区| 长子县| 佛教| 中卫市| 类乌齐县| 新民市| 武鸣县| 淮阳县| 威信县| 阳高县|