Python 练习册-Python 读写Excel和读写Xml

# 题目

纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示:

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

请将上述内容写到 student.xls 文件中

还有几个题,实际上就是读写excel,xml文件.


# Python读写Excel文件

这里我我参考了http://www.gocalf.com/blog/python-read-write-excel.html 他对比了 XlsxWriter, xlrd&xlwt ,OpenPyXL, Microsoft Excel API 不同的优缺点,

我这里 采用xlsxwrtiter来写文件. 过程很简单直接写入坐标和数据即可,这里最后我加上部分用公式求和

image alt text

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2015-05-15 19:27:50
# @Author  : Linsir (root@linsir.org)
# @Link    : https://linsir.org
# import xml.etree.ElementTree as ET
import xlsxwriter

# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()
 
import json

f = file("test.json");
s = json.load(f)
row = 0
col = 0
for (d,x) in s.items():
    worksheet.write(row, col, int(d))
    print d
    col = col + 1
    for data in x:
        print data
        worksheet.write(row, col, data)
        col += 1
    # Write a total using a formula.
    worksheet.write(row, col, '=SUM(C%d:E%d)'%(row + 1,row + 1) )
        
    col = 0    
    row += 1

workbook.close()

更多用法,如背景颜色,图表等高级用法,参考文档https://xlsxwriter.readthedocs.org/


# 使用 xlrd 读取 Excel

打开文件

data = xlrd.open_workbook("test.xls")  

获取一个表格数据

table = data.sheets()[0]            #通过索引获取
table = data.sheet_by_index(0)      #通过索引获取
table = data.sheet_by_name('set')   #通过表名获取

获取表格数据

nrows = table.nrows                 #行数
ncols = table.ncols                 #列数
data = table.cell(nrow, ncol).value #得到表格数据
#获取每行每列的数据
for i in range(0, nrows):
    for j in range(0, ncols):
        data = table.cell(i, j).value


# Python读写 XML文件

lementTree 生来就是为了处理 XML ,它在 Python 标准库中有两种实现。一种是纯 Python 实现例如 xml.etree.ElementTree ,另外一种是速度快一点的 xml.etree.cElementTree 。你要记住: 尽量使用 C 语言实现的那种,因为它速度更快,而且消耗的内存更少。 So这样子做:

try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET

XML 是一种分级的数据形式,所以最自然的表示方法是将它表示为一棵树.

这里我以blog的sitemap.xml为例:

第一步加载并且解析这个 XML

tree = ET.ElementTree(file='sitemap.xml')

然后抓根结点元素:

tree.getroot()

最后遍历元素即可:

for child in root:
    # print child.tag,child.attrib
    for item in child:
        print item.tag,item.text

用起来 还是很简单的。

# 对于写XML文件

如果是全新的话,可用Tornado,Django,Flask 等框架的模板系统生成,很简单。

如果 是要修改的话,还是老老实实的用ET的API相应的操作。 如:

root = tree.getroot()
del root[2]
root[0].set('author', 'linsir')
import sys
tree.write(sys.stdout)

我们在这里删除了根元素的第三个子结点,然后为第一个子结点增加新状态。然后这个树可以写回到文件中.


总结

Python 有很多优秀的模块,能帮助我们快速的处理各种文件,很好很强大。


参考地址:

  1. 用Python读写Excel文件
  2. Creating Excel files with Python and XlsxWriter
  3. 用 ElementTree 在 Python 中解析 XML

--EOF--


>看不到评论?GFW!!!