shelve模块和xml模块
Posted Ryansuperwa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shelve模块和xml模块相关的知识,希望对你有一定的参考价值。
shelve模块
shelve模块比pickle模块简单,只有一个open,返回类似字典的对象,可读可写:key必须为字符串,
而值可以是python所支持的数据类型
import shelve
f=shelve.open(r‘shelve.txt‘)
f[‘stu1_info‘]={‘name‘:‘egon‘,‘age‘:18,‘hobby‘:[‘piao‘,‘smoking‘,‘drinking‘]}
f[‘stu2_info‘]={‘name‘:‘gangdan‘,‘age‘:53}
f[‘school_info‘]={‘website‘:‘http://www.pypy.org‘,‘city‘:‘beijing‘}
print(f[‘stu1_info‘][‘hobby‘])
f.close()
xml模块
xml是实现不同语言或者程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单,不过、
,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统
的接口还主要是xml
xml的格式如下,就是通过<>节点来区别数据结构的:
<?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year>2008</year> <gdppc>141100</gdppc> <neighbor name="Austria" direction="E"/> <neighbor name="Switzerland" direction="W"/> </country> <country name="Singapore"> <rank updated="yes">5</rank> <year>2011</year> <gdppc>59900</gdppc> <neighbor name="Malaysia" direction="N"/> </country> <country name="Panama"> <rank updated="yes">69</rank> <year>2011</year> <gdppc>13600</gdppc> <neighbor name="Costa Rica" direction="W"/> <neighbor name="Colombia" direction="E"/> </country> </data> xml数据
在xml协议中各个语言都是支持的,在python中可以用以下模块操作xml;
print(root.iter(‘year‘)) #全文搜索
print(root.find(‘country‘)) #在root的子节点找,只找一个
print(root.findall(‘country‘)) #在root的子节点找,找所有
import xml.etree.ElementTree as ET tree = ET.parse("xmltest.xml") root = tree.getroot() print(root.tag) 以上是固定格式
遍历xml文档
for child in root: print(‘========>‘,child.tag,child.attrib,child.attrib[‘name‘]) for i in child: print(i.tag,i.attrib,i.text)
只遍历year 节点
for node in root.iter(‘year‘): print(node.tag,node.text) #--------------------------------------- import xml.etree.ElementTree as ET tree = ET.parse("xmltest.xml") root = tree.getroot()
修改
for node in root.iter(‘year‘): new_year=int(node.text)+1 node.text=str(new_year) node.set(‘updated‘,‘yes‘) node.set(‘version‘,‘1.0‘) tree.write(‘test.xml‘)
删除node
for country in root.findall(‘country‘): rank = int(country.find(‘rank‘).text) if rank > 50: root.remove(country) tree.write(‘output.xml‘)
自己创建xml文档
import xml.etree.ElementTree as ET new_xml = ET.Element("namelist") name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"}) age = ET.SubElement(name,"age",attrib={"checked":"no"}) sex = ET.SubElement(name,"sex") sex.text = ‘33‘ name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"}) age = ET.SubElement(name2,"age") age.text = ‘19‘ et = ET.ElementTree(new_xml) #生成文档对象 et.write("test.xml", encoding="utf-8",xml_declaration=True) ET.dump(new_xml) #打印生成的格式
以上是关于shelve模块和xml模块的主要内容,如果未能解决你的问题,请参考以下文章
python模块(shelve,xml,configparser,hashlib,logging)
python模块(shelve,xml,configparser,hashlib,logging)
python16_day06类RE模块subprocess模块xml模块shelve模块
8.模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser h