您的位置:首页 > 编程语言 > Python开发

github/python/ show me the code 25题(二)

2016-04-23 21:46 615 查看
第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示:

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

请将上述内容写到 student.xls 文件中,如下图所示:





#coding:utf-8
#!/usr/bin/python
import sys,os
import json
import xlwt
#f = open('students.txt')
with open (os.getcwd()+'\students.txt') as f:
dict = json.loads(f.read().decode('gbk'))    #json对应到python就是dict类型
xls = xlwt.Workbook()        #创建一个xls对象
sheet = xls.add_sheet('student')
for i in range(len(dict.keys())):
row = i
col = 0
sheet.write(row,col,dict.keys()[i])
for j in dict[dict.keys()[i]]:
col += 1
sheet.write(row,col,j)
xls.save(os.getcwd()+'\student.xls')


xls文件的读写,涉及到了xlwt,xlrd等库。这个题目把字典信息写入xls文件。

利用json将信息结构化的读入,再用xlrt写进空的xls文件里

第 0015 题: 纯文本文件 city.txt为城市信息, 里面的内容(包括花括号)如下所示:

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

这个题和上面没什么不一样,代码就不放了。[/code]
第 0016 题: 纯文本文件 numbers.txt, 里面的内容(包括方括号)如下所示:

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

注意这次的文本,实际上是个元素为序列的序列


#coding:utf-8
import os,json
import xlwt

with open(os.getcwd()+'/numbers.txt') as f:
list = json.loads(f.read().decode('gbk'))
xls = xlwt.Workbook()
sheet = xls.add_sheet('city')    #只有sheet才可以写
for i in range(len(list)):
col = 0
for j in list[i]:
sheet.write(i,col,j)
col += 1

xls.save(os.getcwd()+'/number.xls')


json.loads是个蛮神奇的函数对吧,它可以识别出你的文本究竟是个什么样的结构,是个字典,还是一个序列?

上面的两道题里,文本都是字典信息,所以在代码中为了便于理解,将变量名就起为了dict,同时这个dict也的确是个dict,在写入的时候,就是按dict的用法,将信息写入xls。

这道题的道理也是一样,重点还是理解dict和list的结构与用法。

第 0017 题: 将 第 0014 题中的 student.xls 文件中的内容写到 student.xml 文件中,如

下所示:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<students>
<!--
学生信息表
"id" : [名字, 数学, 语文, 英文]
-->
{
"1" : ["张三", 150, 120, 100],
"2" : ["李四", 90, 99, 95],
"3" : ["王五", 60, 66, 68]
}
</students>
</root>

哇塞,直接就从dict,list跳到了xml?????

git页面里已经给了相关资料的链接:http://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html


#coding:utf-8
import xlrd
import os,json
from lxml import etree
xls = xlrd.open_workbook(os.getcwd()+'\student.xls')
sheet = xls.sheet_by_name("student")
Dict = {}
for row in range(sheet.nrows):
Attr = sheet.row_values(row)    ##此处用法
Dict[Attr[0]] = Attr[1:]    #形成key-value对

#如何操作xml
root = etree.Element('root')
child1 = etree.SubElement(root,"student")
comm = etree.Comment(u'学生信息表 "id":[名字,数学,名字,英文]')
child1.append(comm)
child1.text = unicode(json.dumps(Dict).decode('gbk'))

print child1.text.decode('gbk')
tree = etree.ElementTree(root)
tree.write(os.getcwd()+'\student.xml')


这里说句实在话,python里读写主要就是看库与接口,另一个就是要看相关文件的结构。

我对xml基本是不了解,所以也就不展开说明了。

第 0018 题: 将 第 0015 题中的 city.xls 文件中的内容写到 city.xml 文件中,如下所示:

<?xmlversion="1.0" encoding="UTF-8"?>
<root>
<citys>
<!--
城市信息
-->
{ "1" : "上海", "2" : "北京", "3" : "成都" }</citys>
</root>


#coding:utf-8
import xlrd
import os,json
from lxml import etree
xls = xlrd.open_workbook(os.getcwd()+'\city.xls')
sheet = xls.sheet_by_name("city")
Dict = {}
for row in range(sheet.nrows):
Attr = sheet.row_values(row)    ##此处用法
Dict[Attr[0]] = Attr[1:]    #形成key-value对

#如何操作xml
root = etree.Element('root')
child1 = etree.SubElement(root,"numbers")
comm = etree.Comment(u'城市信息')
child1.append(comm)
child1.text = unicode(json.dumps(Dict).decode('gbk'))

print child1.text.decode('gbk')
tree = etree.ElementTree(root)
tree.write(os.getcwd()+'\city.xml')


第 0019 题: 将 第 0016 题中的 numbers.xls 文件中的内容写到 numbers.xml 文件中,如下

所示:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<numbers>
<!--
数字信息
-->

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

</numbers>
</root>


#coding:utf-8
import xlrd
import os,json
from lxml import etree
xls = xlrd.open_workbook(os.getcwd()+'/number.xls')
sheet = xls.sheet_by_name("city")
List = {}
for row in range(sheet.nrows):
Attr = sheet.row_values(row)    ##此处用法
List[row] = Attr    #形成key-value对

#如何操作xml
root = etree.Element('root')
child1 = etree.SubElement(root,"numbers")
comm = etree.Comment(u'数字信息')
child1.append(comm)
child1.text = unicode(json.dumps(List).decode('gbk'))

print child1.text.decode('gbk')
tree = etree.ElementTree(root)
tree.write(os.getcwd()+'/number.xml')



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: