初学python之路-day23
时间:2019-05-15
本文章向大家介绍初学python之路-day23,主要包括初学python之路-day23使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.xml简介
XML 全称 可扩展标记语言 <tag></tag> 双标签 <tag/> 单标签 没有文本 一般用于设计文档结构 例如换行等 <tr/> 表示换行 <tag style="color:red" age="18">12345</tag> 一个标签的完整组成 有三个部分 tag 是标签名称 12345 是文本内容 text name = "jack" 是标签的属性 其他的规范 1.又开始就必须有结束 2.所有属性值必须包含在双引号里面 3.只能有一个根标签 (最外层只能有一个标签) 4.开始标签和结束标签的顺序是相反的 最先打开谁 就最后关闭谁 最后打开的最先关闭 文档声明可不写 主要是告诉浏览器 该怎么解析这个文件 xml模块是自带的 不需要安装 与json的区别 xml 是一种可扩展的标记语言 可以高度自定义文档的结构 数据类型 标签的含义等等 所以扩展性远比JSON要强 json更加适用于 前后台数据交换 优点 轻量级 跨平台 语法简洁 xml更多用来作为配置文件 当然 python不太常用 html就是一种xml
2.xml的用法
import xml.etree.ElementTree as ET # 打开一个文档 得到一个元素树(XML文档) tree = ET.parse("test1.xml") # 获取根标签 root = tree.getroot() # 遍历出root标签的所有子标签 # for tag in root: # print(tag) # 遍历出文档中所有标签 # for tag in root.iter(): # print(tag) #iter() 查找范围 为全文 如果没有参数则查找所有标签 如果有参数则查找所有名字匹配的标签 ,返回的是这个标签的所有子标签 # 从root下查找第一个名字为country的子标签 # country = root.find("country") # print(country) #find() 必须给参数 查找当前标签的子标签 返回第一个名字匹配的 # 从root下查找所有名字为country的子标签 # countrys = root.findall("country") # print(countrys) #findall() 必须给参数 查找当前标签的子标签 返回所有名字匹配的 # 从root下查找所有名字为country的子孙标签 # for tag in root.iter("country"): # print(tag) #
3.xml获取某个标签的详细内容
import xml.etree.ElementTree as ET tree = ET.parse("test1.xml") root = tree.getroot() es = root.findall("country") # 获取某个标签的 标签名 属性 以及文本 # for e in es: # print(e.tag) # 标签名称 # print(e.attrib) # 标签的所有属性 返回一个字典 # print(e.text) # 标签的文本内容
4.xml
import xml.etree.ElementTree as ET from xml.etree.ElementTree import Element # tree = ET.parse("test.xml") # root = tree.getroot() 1.修改 # # 修改文本 # root.text = "这是跟标签的文本" # # 修改属性 没有则添加 有则覆盖 # root.set("key","value") # # 修改标签名字 # root.tag = "新名字" # # tree.write("test2.xml",encoding="utf-8",xml_declaration=True) 2.删除 root.remove(标签对象) 3.增 root.append(标签对象) 4.查 root.iter/find/findall
#创建新的xml文档 import xml.etree.ElementTree as et # 创建标签 tag = et.Element("data") tag.text = "123" tag.set("name","jack") # 创建一个元素树 并把tag添加到上面 tree = et.ElementTree(tag) tree.write("test6.xml")
5.面向对象
编程中的思想: 1.面向过程编程思想 一步一步按照固定顺序来完成任务的过程 是一种机械化的思维,就像一条流水线,指定流水线只能生产指定产品 优点: 流水线的方式,将复杂的事情,流程化,简单化 缺点: 牵一发而动全身,若需要更改目标,更改代码很麻烦,扩展性与可维护性差 应用场景: 对扩展要求较低的程序 系统内核,shell脚本,计算器啥的 2.面向对象编程 面向对象关注点是对象,把你的思维角度从具体操作这 变成了一个指挥者,指挥别人完成任务 所以对象不是凭空产生的 需要我们自己先设计对象 然后在使用它们 优点: 不需要在关注完成任务的具体步骤,复用性高,扩展性高,维护性高 缺点: 由于其的特性,程序需要先设计,结构更复杂,编程复杂度提高了,无法准确预知执行结果 应用场景: 对于扩展性要求较高的应用程序 qq,微信,王者荣耀
6.对象和类
对象:世间万物都是对象,具备某种特征与行为的集合体并且是具体存在的 类: 某些具备相同特征和相同行为的集合体 ,是一种抽象概念 类型==类 特征==属性 行为==技能 对象和类的关系 在生活中 先有对象 再有类 在代码中 必须现有类 才能产生对象 (因为你需要提前告诉计算机这个对象是什么样的有什么技能)
类:使用class关键字来定义一个类 类名称为大驼峰命名法 所有单词首字母大写 小驼峰 第一个单词首字母小写 类的创建 class Teacher(): # 描述特征使用变量 (属性) work="teach" # 描述技能使用函数 (方法) def nature(): print('教书育人') print(Teacher.work) Teacher.nature() 对象的创建 t1 =Teacher() t1.nature() # 为对象增加了属性 t1.name = "张三" # 在访问时优先访问自己名称空间的内容 如果找不到 会自动找类中的属性 print(t1.name) # 每个对象都会存储自己所在类的地址 可以使用__class__来访问 print(t1.__class__) print(type(t1)) # 查看名称空间中的内容 print(t1.__dict__) print(Teacher.__dict__) 注意: 1创建类时会创建类的名称空间,创建对象时也会创建对象的名称空间,二者是独立的,对象可以访问类的名称空间 2对象属性的查找顺序: 先在对象名称空间查找是否有该属性,若找到则输出;若找不到再去对象属于的类的名称空间查找该属性
原文地址:https://www.cnblogs.com/wangwei5979/p/10871876.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据结构算法操作试题(C++/Python)——字符串转换整数 (atoi)
- 数据结构算法操作试题(C++/Python)——电话号码的字母组合
- 数据结构算法操作试题(C++/Python)——删除链表的倒数第N个节点
- Day 7:斐波那契数列
- Day8 :跳台阶
- Linux Signal 一网打尽
- Day9 :变态跳台阶
- Day10 :矩形覆盖
- vue3.0新特性初体验(二)
- 数据结构算法操作试题(C++/Python)——有效的括号
- 数据结构算法操作试题(C++/Python)——合并两个有序链表
- Day11 :二进制中1的个数
- 数据结构算法操作试题(C++/Python)——括号生成
- 数据结构算法操作试题(C++/Python)——合并K个排序链表
- 数据结构算法操作试题(C++/Python)——删除排序数组中的重复项