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 檔案中,如下圖所示:
- 閱讀資料 騰訊遊戲開發 XML 和 Excel 內容相互轉換
第 0015 題: 純文字檔案 city.txt為城市資訊, 裡面的內容(包括花括號)如下所示:
{
"1" : "上海",
"2" : "北京",
"3" : "成都"
}
請將上述內容寫到 city.xls 檔案中,如下圖所示:
第 0016 題: 純文字檔案 numbers.txt, 裡面的內容(包括方括號)如下所示:
[
[1, 82, 65535],
[20, 90, 13],
[26, 809, 1024]
]
請將上述內容寫到 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】切勿浮沙築高臺,無速成,唯有堅持!
專欄達人 授予成功建立個人部落格專欄
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':