<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      python json表格化輸出

      需求

      • 將json數據以表格形式輸出
      • 超長文本換行輸出
      • 能顯示中文
      • 在linux終端輸出

      實現

      首先數據的模樣。既然是表格化輸出,那必然傳入的數據是一個數組(廢話),如果一個項文本很長需要換行輸出,那這個項所屬的項組都要換行輸出。

      首先是處理json數據:

      jd = json.loads(data)
      

      這樣產生的數據是一個字典列表,即:

      [{'key0': '值5', 'key1': '值5', 'key2': '值5', 'key3': '值5', 'key4': '值5'}, 
      {'key0': '值6', 'key1': '值6', 'key2': '值6', 'key3': '值6', 'key4': '值6'},
      {'key0': '值7', 'key1': '值7', 'key2': '值7', 'key3': '值7', 'key4': '值7'},
      {'key0': '值8', 'key1': '值8', 'key2': '值8', 'key3': '值8', 'key4': '值8'},
      {'key0': '值9', 'key1': '值9', 'key2': '值9', 'key3': '值9', 'key4': '值9'}]
      

      定義函數

      def tabular_print(datum):
      

      上面說了,咱們先對傳進來的數據進行檢查:

      try:
      	if len(datum) == 0:
      		print('None.')
      		return
      except TypeError:
      	print('None')
      	return
      

      對于每個數據組,統一調用 limit_print(line) 函數來打印。
      首先打印表頭:

      limit_print(keys)
      

      然后打印數據

      for item in datum:
      	val = []
      	for k in keys:
      		val.append(item[k])
      		limit_print(val)
      

      以下是 limit_print 的實現,僅針對一個漢字是兩倍字母寬度的情況。

      # 在有限的寬度下進行輸出,超長則換行
      def limit_print(line):
          flag = True
          max_row_size = 20
          cnt = 0
      
          length = []
          for s in line:
              length.append(get_length(str(s)))
      
          lst = [0 for _ in range(len(line))]
          sz = [0 for _ in range(len(line))]
      
          while flag:
              sod = 0
              for i in range(len(line)):
                  s = str(line[i])
                  n = length[i]
                  if n < max_row_size * cnt:
                      sod += 1
                      print(' ' * max_row_size, end='')
                  else:
                      if n > max_row_size * (cnt + 1):
                          lst[i], sz[i] = next_station(s, lst[i], sz[i], max_row_size * (cnt + 1))
                          print(' ' * (max_row_size * (cnt + 1) - sz[i]), end='')
                      else:
                          sod += 1
                          lst[i], sz[i] = next_station(s, lst[i], sz[i], n)
                          print(' ' * (max_row_size * (cnt + 1) - sz[i]), end='')
                  print(' ', end='')
              if sod == len(line):
                  flag = False
              cnt += 1
              print()
      
          print('-' * (max_row_size + 1) * len(line))
      
      
      # 獲取字符串在屏幕上顯示的長度
      def get_length(s) -> int:
          res = 0
          for i in s:
              # 中文占兩個單位寬度
              if is_full_width(i):
                  res += 2
              else:
                  res += 1
          return res
      
      
      # 確定換行位置
      def next_station(s, idx, st, ed) -> (int, int):
          while idx < len(s) and st < ed:
              if is_full_width(s[idx]):
                  if st + 2 > ed:
                      return idx, st
                  else:
                      st += 2
              else:
                  st += 1
              print(s[idx], end='')
              idx += 1
          return idx, st
      
      
      # 是否是全角符號
      def is_full_width(s) -> bool:
          if '\u4e00' <= s <= '\u9fa5':
              return True
          if '\u0f01' <= s <= '\uff60':
              return True
          if '\uffe0' <= s <= '\uffe6':
              return True
          return False
      
      posted @ 2022-12-05 20:05  xDaniel  閱讀(489)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品办公室沙发| 亚洲中文字幕在线无码一区二区| 女人喷水高潮时的视频网站| 久久精品亚洲中文无东京热| 爱如潮水日本免费观看视频| 亚洲性无码av在线| 精品无码久久久久国产动漫3d| 99久久亚洲综合精品成人网| 色吊a中文字幕一二三区| 精品国际久久久久999波多野| 国产无吗一区二区三区在线欢| 激情国产一区二区三区四区| 日韩精品一区二区都可以| 在线看高清中文字幕一区| 亚洲欧美日韩人成在线播放| 狼色精品人妻在线视频| 天天综合色一区二区三区| 一区二区三区激情都市| 国产真实乱对白精彩久久| 亚洲国产午夜精品理论片妓女 | 国产免费一区二区不卡| 男女啪啪高潮激烈免费版| 婷婷开心色四房播播| 蜜桃av多人一区二区三区| 天天摸天天做天天爽水多| 午夜精品福利亚洲国产| 99精品热在线在线观看视| 最近中文字幕日韩有码| 国产成人精品2021欧美日韩| 国产欧美日韩亚洲一区二区三区| 国产毛片欧美毛片久久久| 亚洲鸥美日韩精品久久| 亚洲岛国av一区二区| 麻豆成人av不卡一二三区| 人妻精品动漫H无码中字| 国产热A欧美热A在线视频| 长海县| 综合色天天久久| 麻花传剧mv在线看免费| 国产精品美女乱子伦高| 免费国产一级特黄aa大片在线|