1. 程式人生 > >Python Show-Me-the-Code 第 0014,0015,0016 題 寫Excel檔案

Python Show-Me-the-Code 第 0014,0015,0016 題 寫Excel檔案

第 0014 題: 純文字檔案 student.txt為學生資訊, 裡面的內容(包括花括號)如下所示:

{
    "1":["張三",150,120,100],
    "2":["李四",90,99,95],
    "3":["王五",60,66,68]
}

請將上述內容寫到 student.xls 檔案中,如下圖所示:

student.xls

  • 閱讀資料 騰訊遊戲開發 XML 和 Excel 內容相互轉換

第 0015 題: 純文字檔案 city.txt為城市資訊, 裡面的內容(包括花括號)如下所示:

{
    "1" : "上海",
    "2" : "北京",
    "3" : "成都"
}

請將上述內容寫到 city.xls 檔案中,如下圖所示:

city.xls

第 0016 題: 純文字檔案 numbers.txt, 裡面的內容(包括方括號)如下所示:

[
    [1, 82, 65535],
    [20, 90, 13],
    [26, 809, 1024]
]

請將上述內容寫到 numbers.xls 檔案中,如下圖所示:

numbers.xls

思路:

嗯這三題看起來都是差不多的,都屬於使用Python來把資料寫入Excel文件的問題,解決的方法也是差不多,所以就寫在一起了。Python擁有強大的標準庫,但是這個標準庫好像並沒有用於處理excel檔案的庫(什麼鬼)。但肯定有強大的第三方庫可以的,對不?

找了一下,發現有如下三個庫:xlrd,xlwt和xlutils。其中,xlrd只能讀取xls,xlwt只能新建xls(不可以修改),xlutils能將xlrd.Book轉為xlwt.Workbook,從而得以在現有xls的基礎上修改資料,並建立一個新的xls,實現修改。
看樣子好像xlutils是很強大的,不過這裡我們用xlwt就可以解決問題啦。

資料是存在檔案中的,所以首先要切換到檔案所在目錄,然後開啟檔案,讀取出來後解析成json格式,再按照要求寫進表格中就ok了。
發現了個問題,就是在json.load時得到的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict

步驟:

安裝xlwt庫(如果沒有): sudo pip install xlwt
切換目錄,開啟檔案
讀取檔案內容
使用json解析
寫入xls檔案

程式碼:

0014.寫excel檔案1.py

#!/usr/bin/env python
#coding: utf-8
import os
import
json import xlwt from collections import OrderedDict # 存放檔案的目錄 filepath = '/home/bill/Desktop' def run(): os.chdir(filepath) # 讀取檔案內容 with open('student.txt') as f: content = f.read() # 轉為json, 注意轉化後的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict d = json.loads(content, object_pairs_hook=OrderedDict) file = xlwt.Workbook() # 新增sheet table = file.add_sheet('test') for row, i in enumerate(list(d)): table.write(row, 0, i) for col, j in enumerate(d[i]): table.write(row, col+1, j) file.save('student.xls') if __name__ =="__main__": run()

0015.寫excel檔案2.py

#!/usr/bin/env python
#coding: utf-8
import os
import json
import xlwt
from collections import OrderedDict

# 存放檔案的目錄
filepath = '/home/bill/Desktop'

def run():
    os.chdir(filepath)
    # 讀取檔案內容
    with open('city.txt') as f:
        content = f.read()
    # 轉為json, 注意轉化後的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict
    d = json.loads(content, object_pairs_hook=OrderedDict)
    file = xlwt.Workbook()
    # 新增sheet
    table = file.add_sheet('test')
    for row, i in enumerate(list(d)):
        table.write(row, 0, i)
        table.write(row, 1, d[i])
    file.save('city.xls')

if __name__ =="__main__":
    run()

0016.寫excel檔案3.py

#!/usr/bin/env python
#coding: utf-8
import os
import json
import xlwt
from collections import OrderedDict

# 存放檔案的目錄
filepath = '/home/bill/Desktop'

def run():
    os.chdir(filepath)
    # 讀取檔案內容
    with open('numbers.txt') as f:
        content = f.read()
    # 轉為json, 注意轉化後的dict的元素位置和轉化前可能會不一致,因此要使用OrderedDict
    d = json.loads(content, object_pairs_hook=OrderedDict)
    file = xlwt.Workbook()
    # 新增sheet
    table = file.add_sheet('test')
    for row, i in enumerate(d):
        for col, j in enumerate(i):
            table.write(row, col, j)
    file.save('numbers.xls')

if __name__ =="__main__":
    run()

執行後生成的表格:

這裡寫圖片描述

student.xls:
這裡寫圖片描述

city.xls:
這裡寫圖片描述

numbers.xls:
這裡寫圖片描述

相關推薦

Python Show-Me-the-Code 0014,0015,0016 Excel檔案

第 0014 題: 純文字檔案 student.txt為學生資訊, 裡面的內容(包括花括號)如下所示: { "1":["張三",150,120,100], "2":["李四",90,99,95], "3":["王五",60,66,68]

Github學習(talk is cheap,show me the code. -Linus)

功能(分散式) 1.協同修改,多人並行的修改伺服器端的同一個檔案 2.資料備份,不僅儲存目錄和檔案的當前狀態,還能夠儲存每一個提交過的歷史狀態。 3.版本管理,不儲存重複資料。 4.許可權控制 5.歷史記錄 6.分支管理,允許開發團隊在工作過程中多條生產線同時推進任務,進一步提高效率

Show me the code,babel 7 最佳實踐!

前言 本文首發於 github 部落格 如對你有幫助是我的榮幸,你的 star 是對我最大的支援! 大家都知道 babel 是相容對 ES6 支援不完善的低版本瀏覽器的轉換編譯器。 而 babel 其實主要做的只有兩件事情: 語法轉換 新 API 的 polyfill 相容

【小工匠】show me the code ,change the world

---------------------->>GitHub<<----------------- https://github.com/yangshangwei --------------------->>公眾號<<---------------

小工匠(show me the code ,change the world)

Andoroid新特性解讀 主要介紹Design Support Library中新推出的控制元件,介紹詳細的說明和使用,以及Android中新的特性

【程式緣】Talk is cheap, show me the code.

重慶大學CS本科&碩士,喜歡計算機技術,關注後臺開發。 學習理念:保持對技術知識的學習補充;提醒自己眼到,手到,心到;看了,做了,總結了,才有收穫。 郵箱:[email protected]

Talk is cheap, show me the code!

JS 提交form表單 原始碼例項 一:javascript 頁面加裁時自動提交表單 Form表單: <form method="post" id="myform" action="a.php"> <input type="subm

Talk is cheap, show me the code. ---Linus Torvalds

1. abstract class Name {    private String name;    public abstract boolean isStupidName(String name) {} } 大俠們,這有何錯誤? 答案: 錯。abstract meth

【下一個五年】talk is cheap,show me the code.!!!要重實踐。找準定位和方向,不急不躁,持續投入。順勢而為。

○ 種一棵樹最好的時間是十年前,其次是現在 ○ 堅持輸出,堅持書寫,才可以持續成長 ○ 所有美好事物的成長都是緩慢的 ○ 既往不戀,未來不迎,當下不雜 ○ 業精於勤,荒於嬉,行成於思,毀於隨 ○將軍趕路 不追小兔 ○不要拘泥於語言,同樣也不要拘泥於行業,眼光放遠一點

Talk is cheap, show me the code

什麼是cardView? CardView顧名思義就是卡片View,也是Android5.0推出來的 Support v7包裡的widgetCardView是繼承自FrameLayout。CardVi

Talk is cheap. Show me the code

problem 利用Python程式進行攝氏度和華氏度之間的轉換 根據華氏和攝氏溫度定義,轉換公式如下: C = ( F – 32 ) / 1.8 F = C * 1.8 + 32 其中,C表

Talk is cheap,show me the code

平時沒事就喜歡刷刷微博,追追星,關注關注娛樂圈動態順便看看老婆們的最新動態,每次看到老婆們發的新圖就很幸福,於是就想寫個爬蟲把老婆們的微博配圖給爬下來,一般爬到的不是自拍就是表情包,還是收穫滿滿的。 因為最近學到了一句話:不要重複造輪子。所以第一當然是去看一看

Anders 的專欄(Talk is cheap, show me the code!)

JAVA NIO 檔案鎖 FileLock 檔案鎖定初看起來可能讓人迷惑。它 似乎指的是防止程式或者使用者訪問特定檔案。事實上,檔案鎖就像常規的 Java 物件鎖 ― 它們是 勸告式的(advisory) 鎖。它們不阻止任何形式的資料訪問,相反,它們通過鎖的共享和獲取賴允

Show me the code

linux版本為Centos7 系統中沒有安裝httpd、php、php-mysql、mysql,以及mariadb,但已經安裝mariadb-libs,/etc/資料夾中存在my.cnf,配置如下: [mysqld] datadir=/var/lib/

花果山第一屆猿類分級考試實錄--Talk is cheap,Show me the code

本故事純屬虛構,如有雷同,純屬巧合! 故事背景   悟空師徒4人取經回來後,因不耐收到管教,就回到了花果山,帶領一幫猴子猴孫逍遙自在的過日子,奈何因在閻王殿裡將生死薄中的猴子猴孫的名字都劃去了,猴子猴孫是越來越多。   悟空最是沒有耐心的,無法一一管教,隨向太白金

數據可視化入門之show me the numbers

推薦 有趣的 好的 style blank 分享 span 需要 width 數據的可視化一直是自己瞎玩著學,近來想系統的學數據可視化的東西,於是搜索資料時看到有人推薦《show me the numbers》作為入門。 由於搜不到具體的書籍內容,只能搜到一個

Talking is cheap,show me a code

目錄 2. 源安裝        版本升級 解除安裝 windows下安裝       windows下只需要到官網下載http://nodejs.org下載MSI

Talk is cheap,show me your code

最近在看《headfirst 設計模式》這本書,裡面講的設計模式是基於java語言的,看完後我會利用C++來實現以加深自己的理解。先呈上觀察者模式: 觀察者模式定義了物件間的一對多依賴,這樣一來,當一個物件改變狀態時,它的所有依賴者都會收到通知並自動更新。它主要包括了一個主

Talk is cheap,give me the code!

Python作為資料科學中最重要的語言,有著不少語言特性,值得初學者注意。下面是其中的幾點。 1.Python中很重要的一種資料型別就是字典,其宣告方式如下: d = {'foo':1, 'bar':