91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在python中利用xlsxwriter將有向無環圖轉換成Excel

發布時間:2021-02-25 16:09:31 來源:億速云 閱讀:168 作者:戴恩恩 欄目:開發技術

本文章向大家介紹如何在python中利用xlsxwriter將有向無環圖轉換成Excel,主要包括如何在python中利用xlsxwriter將有向無環圖轉換成Excel的使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。

python可以做什么

Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。

代碼:

(py3) [root@7-o-1 py-dag]# cat test.py 
from dag import DAG
dag = DAG()
dag.from_dict({'a': ['b', 'c','e'],
     'b': ['d','g'],
     'c': ['d'],
     'g':['i'],
     'i':[],
     'e':['gh','ox','wer'],
     'gh':[],
     'ox':[],
     'wer':[],
     'd': []})

def generate_excel(dag, row_start,col,excel_file):#參數分別為有向無環圖圖、開始寫入的行,開始寫入列,以及文件名
 import xlsxwriter#導入Excel操作模塊
 workbook = xlsxwriter.Workbook(excel_file)#創建Excel文件
 worksheet = workbook.add_worksheet('testsheet')#創建工作簿
 #以下為部分格式的預定義(包含合并行格式,數字日期格式等)
 merge_format = workbook.add_format({
 'bold': 1,
 'border': 1,
 'align': 'left',
 'valign': 'vcenter'})

 cell_format = workbook.add_format({
 'bold': 1,
 'border': 1,
 'align': 'top',
 'valign': 'left'})

 date_format = workbook.add_format({
 'bold': 1,
 'border': 1,
 'align': 'top',
 'valign': 'left',
 'num_format': 'd mmmm yyyy'})

 num_format = workbook.add_format({
 'bold': 1,
 'border': 1,
 'align': 'top',
 'valign': 'left',
 'num_format': '0.0000%'})

 def get_node_leaves(node,ret = []):#用來返回一個節點的所有最終葉子結點
   downs = dag.downstream(node)#先獲取當前節點的下一級節點
   if len(downs) < 1:#如果無下一級節點將直接將此節點添加到列表
    ret.append(node)
   else:#負責循環遞歸,將所有葉子結點添加到列表
    for inner_node in downs:
     get_node_leaves(inner_node,ret)
   return ret#返回節點列表

 def dag_visit(dag, node, r_idx,col):
  if node not in all_leaves:
   downstreams = dag.downstream(node)
   node_leaves = len(get_node_leaves(node,[]))#獲取所有葉子的個數,用來判斷是否進行合并行操作
   r_idx_end = r_idx+node_leaves-1
   if len(downstreams) == 1:#對于只有一個子節點的node應用write
    worksheet.write(col+str(r_idx), node,cell_format)
   else:#對于多余一個子節點的node應用merge_range
    worksheet.merge_range(col+str(r_idx)+':'+col+str(r_idx_end), node,merge_format)
   col = chr(ord(col)+1)#列+1,開始進入子節點遍歷
   downstreams_len = len(downstreams)
   if len(downstreams) >0:
    row_next = r_idx
    for downstream in downstreams:
     subnode_leaves = len(get_node_leaves(downstream,[]))#獲取當前節點的所有葉子用來為下一個節點的填充確定位移
     if downstream in all_leaves:
      subnode_leaves = 1
      if col == merge_to:#對于子節點為葉子并且跨度為1應用write
       worksheet.write(col+str(row_next), downstream,cell_format)
      else:#對于子節點為葉子結點但是跨度大于1應用merge_range
       merge_rg = col+str(row_next) +':'+merge_to+str(row_next)
       worksheet.merge_range(merge_rg, downstream,merge_format)
     else:#子節點非葉子結點進行遞歸遍歷
      dag_visit(dag, downstream, row_next,col)
     #每訪問一個子結點需要將row值增加方便下一個node正確填充,row的值是前一個結點的子節點個數
     row_next += subnode_leaves

  else:
   print(node)

 head_node = dag.ind_nodes()[0]
 all_leaves = dag.all_leaves()
 dag_depth = dag.dag_depth(head_node,0)
 merge_to= chr(ord(col)+dag_depth)#對于合并列的終結列index
 dag_visit(dag, head_node, row_start,col)#傳遞根節點進行遍歷
 workbook.close()
generate_excel(dag,1,'A','test.xlsx')

到此這篇關于如何在python中利用xlsxwriter將有向無環圖轉換成Excel的文章就介紹到這了,更多相關的內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天水市| 抚宁县| 中江县| 子长县| 垦利县| 晋江市| 红桥区| 斗六市| 连州市| 如东县| 贵州省| 永春县| 洛宁县| 泽州县| 闵行区| 成都市| 加查县| 页游| 印江| 苏尼特右旗| 泰兴市| 舒兰市| 德惠市| 琼中| 德令哈市| 双桥区| 铜鼓县| 望江县| 甘德县| 广东省| 余江县| 施秉县| 林甸县| 仪陇县| 莫力| 汤阴县| 吕梁市| 清涧县| 射阳县| 中卫市| 饶阳县|