Python读写xml(xml,lxml)Edge 浏览器插件 WebTab - 免费ChatGPT

Python读写xml(xml,lxml)Edge 浏览器插件 WebTab - 免费ChatGPT

  • XML
    • 一、xml文件创建
      • 方法一:使用xml.dom.minidom
        • 1、文件、标签的创建
      • 方法二:使用ElementTree
    • 二、xml文件修改
      • 1、修改标签内容,属性
      • 2、增加子标签
    • 四、xml操作之删除
      • 1、删除指定标签
      • 3、删除xml文件
  • LXML
    • 1、读取xml文档
      • 1)文档解析
      • 2)获取属性
      • 3)获取节点
      • 4)获取文本
    • 2、写入xml文档
      • 1)创建文档(节点)
      • 2)添加子节点
      • 3)添加文本
      • 4)保存文档
  • Edge 浏览器插件 WebTab - 免费ChatGPT
  • 视频逐帧保存图片

XML

一、xml文件创建

方法一:使用xml.dom.minidom

1、文件、标签的创建

import xml.etree.ElementTree as etree
from xml.dom.minidom import Document
from xml.etree.ElementTree import Element as El# 创建xml文件
doc = Document()
# 创建根节点
root_node = doc.createElement("root")
doc.appendChild(root_node)
# 创建子节点
son_node = doc.createElement("son_node")
root_node.appendChild(son_node)
# 子节点添加内容
text = doc.createTextNode("标签内容")
son_node.appendChild(text)
# 设置节点属性
son_node.setAttribute("name", "value")
son_node.setAttribute("name1", "value1")
# 添加二级子节点
sec_node = doc.createElement("second")
son_node.appendChild(sec_node)
text = doc.createTextNode("二级子节点内容")
sec_node.appendChild(text)
# 将内容保存到xml文件中
filename = "test.xml"
f = open(filename, "w", encoding="utf-8")
f.write(doc.toprettyxml(indent="  "))
f.close()

输出

<?xml version="1.0" ?>
<root><son_node name="value" name1="value1">标签内容<second>二级子节点内容</second></son_node>
</root>

方法二:使用ElementTree

import xml.etree.ElementTree as etree# 创建根元素
root = etree.Element("root")
# 创建子元素son,并设置子元素的标签名,属性
son = etree.SubElement(root, "max", attrib={"sex": "male"})
# 设置子元素son的内容
son.text = "content"
# 创建子元素的子元素sub_son
sub_son = etree.SubElement(son, "lily", attrib={"sex": "female"})
# 创建elementtree实例
et = etree.ElementTree(element=root)
et.write(r"test.xml", encoding="utf-8")

输出

<root><max sex="male">content<lily sex="female" /></max></root>

二、xml文件修改

1、修改标签内容,属性

# 修改标签的内容
tag.text = "modify_content"
# 修改标签的属性,或者添加属性
tag.set("atrri", "value3")
# 此操作将删除其他属性,只保留设置的属性
tag.attrib = {"atrri": "value"}

2、增加子标签

tag = root.find(".//name")  # 需加入.//
# name标签下增加sex和address标签
sex = etree.SubElement(tag, "sex", attrib={"hobby": "swim"})
sex.text = "male"
addr = etree.SubElement(tag, "address", attrib={"provience": "guangdong"})
addr.text = "shenzhen"
tree.write(xml_path)

四、xml操作之删除

1、删除指定标签

xml_path = r"test.xml"
tree = etree.parse(xml_path)  # 获取xml整个文档内容
for t in tree.iter():  # tree.iter()可获得xml的所有节点及信息if t.tag == "entry":  # 查找到父节点print(list(t))for i in list(t):if i.tag == "category":  # 查找到子节点t.remove(i)  # 通过父节点删除子节点break  # 如果要删除父节点下所有子节点为category的,则为continue
tree.write(xml_path)

3、删除xml文件

xml_path = r"test.xml"
os.remove(xml_path)

LXML

lxml解析xml的时候,自动处理各种编码问题。而且它天生支持 XPath 1.0、XSLT 1.0、定制元素类。

1、读取xml文档

1)文档解析

lxml可以解析xml的字符串,使用etree.fromstring方法,如下所示:

#coding:utf-8
from lxml import etreexml_text = '<xml><head></head><body></body></xml>'
xml = etree.fromstring(xml_text)

lxml可以直接读取xml文件。

示例test.xml:

<?xml version="1.0" encoding="utf-8"?>
<root version="1.2" tag="test"><head><title>test xml document</title></head><body><items id="1"><source>aa</source><target>AA</target></items><items id="2"><source>bb</source><target>BB</target></items><items id="3"><source>cc</source><target id="3t">CC<bpt id="3t1"/>cc</target></items></body>
</root>

lxml读取xml文件的代码如下所示:

#coding:utf-8
from lxml import etreexml = etree.parse('test.xml') #读取test.xml文件

2)获取属性

根节点root中有两个属性,我们可以通过如下方法获取根节点和其属性:

#coding:utf-8
from lxml import etreexml = etree.parse('test.xml') #读取test.xml文件
root = xml.getroot() #获取根节点#获取属性
print(root.items()) #获取全部属性和属性值
print(root.keys())  #获取全部属性
print(root.get('version', '')) #获取具体某个属性

得到如下结果:

[('version', '1.0'), ('tag', 'test')]
['version', 'tag']
1.2

3)获取节点

假如我们不知道root节点下有什么节点,可以通过循环遍历。

for node in root.getchildren():print(node.tag) #输出节点的标签名

得到如下结果:

head
body

4)获取文本

有些元素中有文本,这个可以通过text属性获取。

#获取source元素中的文本
for node in root.xpath('//source'):print(node.text)

2、写入xml文档

1)创建文档(节点)

对于lxml来说,任意节点都可以保存成一个xml文档。

我们只需要给该节点加入属性、内容、子节点等等即可。

那么创建节点方法如下:

#coding:utf-8
from lxml import etree#创建标签为root的节点
root = etree.Element('root')

在创建节点的同时,也可以给该节点加入命名空间:

root = etree.Element('root', nsmap={'xmlns':'http://www.w3.org/1999/xhtml'})

在上面的test.xml中,还有两组属性。可用set方法添加属性:

root.set('version', '1.2')
root.set('tag', 'test')

当然,也可以在创建节点的时候,就写入属性:

attribs = {'version':'1.2', 'tag':'test'}
root = etree.Element('root', attrib=attribs)

2)添加子节点

添加根节点之后,根节点下有两个子节点:head和body。

添加子节点有两种方法,先看方法1:

head = etree.Element('head')
root.append(head)

该方法是创建节点,再用append方法追加到root节点中。

还有一种方法,直接创建子节点:

head = etree.SubElement(root, 'head')

推荐使用第2种方法,比较快捷。

若需要写属性值,除了用set方法。etree.SubElement方法也可以像etree.Element方法一样直接写入属性。

head = etree.SubElement(root, 'head', attrib={'id':'head_id'})

3)添加文本

test.xml文档中,有几个地方需要添加文本。先给head添加title属性,并加入文本:

title = etree.SubElement(head, 'title')
title.text = 'test xml document'

直接给text赋值即可。

4)保存文档

文档写好之后,就保存文档。保存文档这里有两种方法。

一种为通过etree.tostring方法得到xml的文本,再手动写入。这个方法过于麻烦,就不讲了,也不推荐。

常规方法是通过etree的tree对象保存文件。代码如下:

#节点转为tree对象
tree = etree.ElementTree(root)
tree.write('test.xml', pretty_print=True, xml_declaration=True, encoding='utf-8', with_comments=True)

各个参数含义如下:

  1. 第1个参数是xml的完整路径(包括文件名);
  2. pretty_print参数是否美化代码;
  3. xml_declaration参数是否写入xml声明,就是我们看到xml文档第1行文字;
  4. encoding参数很明显是保存的编码;
  5. with_comments参数是否保留注释。

当你使用Python处理XML文件并且对注释进行修改时,你需要使用一个支持XML注释的XML解析器库。例如,使用Python内置的xml.etree.ElementTree来解析XML文档时,它是不会保留注释的,并且属性的顺序可能也会发生改变。但是,你可以使用第三方库lxml来处理XML文件并保留注释。

from lxml import etree# 解析XML文件
doc = etree.parse('example.xml')# 获取注释节点并进行修改
comment_node = doc.xpath('//comment()')[0]
comment_node.text = 'New comment'# 保存修改后的XML文件,保留注释
doc.write('example.xml', encoding='utf-8', xml_declaration=True, pretty_print=True, with_comments=True)

在代码中,我们使用etree.parse方法解析XML文件,然后通过doc.xpath方法获取注释节点并进行修改。最后使用doc.write方法保存修改后的XML文件,确保传递参数with_comments=True以保留注释。

Edge 浏览器插件 WebTab - 免费ChatGPT

在这里插入图片描述

视频逐帧保存图片

import cv2
import os
# 打开视频文件
# 需要安装
# pip install opencv-python
path = r"***.mp4"
path_dir=r"pictures"
def get_frames():cap = cv2.VideoCapture(path)# 检查视频是否成功打开if not cap.isOpened():print("Error opening video stream or file")# 初始化帧计数器frame_count = 0# 循环逐帧读取视频while cap.isOpened():# 读取单帧ret, frame = cap.read()# 如果帧读取成功if ret:# 在这里添加对每一帧的处理代码# 保存当前帧为图像文件cv2.imwrite(os.path.join(path_dir,f"frame_{frame_count}.jpg"), frame)# 增加帧计数器frame_count += 1else:break# 清理资源cap.release()cv2.destroyAllWindows()
if __name__ == "__main__":get_frames()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/31812.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4090显卡上部署 Baichuan-13B-Chat

4090显卡上部署 Baichuan-13B-Chat 0. 背景1. huggingface 地址2. 量化部署使用 Baichuan-13B-Chat3. FastChat 部署使用 Baichuan-13B-Chat3-1. 创建虚拟环境3-2. 克隆代码3-3. 安装依赖库3-4. 使用命令行进行推理3-5. 使用 UI 进行推理3-6. 使用 OpenAI API 方式进行推理3-7.…

清华ChatGLM2-6B开源!第二代性能大幅提升,推理提速42%,最高支持32K上下文

清华ChatGLM2-6B开源&#xff01;第二代性能大幅提升&#xff0c;推理提速42%&#xff0c;最高支持32K上下文 3月份&#xff0c;清华系大模型 ChatGLM-6B 惊喜亮相。 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构…

Baichuan-13B 介绍及微调

文章目录 Baichuan-13B介绍Baichuan-13B特点Baichuan-13B效果Baichuan-13B模型参数 推理和部署模型下载模型推理 微调和部署下载仓库配置环境微调数据微调过程 Baichuan-13B介绍 2023年7月11日&#xff0c;百川智能发布Baichuan-13B&#xff01; github地址&#xff1a;https:…

【大模型】更强的 LLaMA2 来了,开源可商用、与 ChatGPT 齐平

【大模型】可商用且更强的 LLaMA2 来了 LLaMA2 简介论文GitHubhuggingface模型列表训练数据训练信息模型信息 许可证参考 LLaMA2 简介 2023年7月19日&#xff1a;Meta 发布开源可商用模型 Llama 2。 Llama 2是一个预训练和微调的生成文本模型的集合&#xff0c;其规模从70亿到…

[Unity3D] 协程

目录 前言 学习来源&#xff1a; 一、什么是协程 二、协程的应用举例 三、协程的使用方式 3.1 启动 3.2 结束 3.3 嵌套 3.4 注意 四、Unity脚本的生命周期 五、yield速查表 前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#…

“AIGC早报”已内测2个月了,来看看她长什么样子

今天&#xff0c;是咱们社群“AI产品经理大本营”六周年活动的第二天&#xff0c;正式给大家介绍下&#xff0c;已内测2个月的重要会员权益——AIGC日报。 会分三个部分&#xff1a;效果口碑、我们如何做到的、今日的AIGC早报展示‍‍‍‍‍‍‍‍ ps&#xff0c;文末会发福利星…

何以驾驭AIGC领域的关键进程?得深邃技术得天下

“大海和火车成为那个世纪新兴经济的象征&#xff1a;强大、危险、难以驾驭和预测&#xff0c;但令人着迷和兴奋。” 这是诺贝尔经济学奖得主埃德蒙•费尔普斯曾在《大繁荣》一书中对19世纪有过这样的描述。 穿越回当下的21世纪&#xff0c;又有哪项发明具备这些特质&#xff…

【腾讯云 Cloud Studio 实战训练营】Cloud Studio实现健康上报小程序(代码开源)

目录 &#x1f373;前言&#x1f373;实验介绍&#x1f373;产品介绍&#x1f373;注册Cloud Stdio&#x1f373;后端Spring服务&#x1f373;创建项目上传项目数据库连接与导入 &#x1f373;Vue后台管理创建项目编辑模板信息选择环境镜像上传资源文件 &#x1f373;小程序⭐总…

【OpenMMLab AI实战营二期笔记】第七天 MMDetection代码课

0. 环境检测和安装 # 安装 mmengine 和 mmcv 依赖 # 为了防止后续版本变更导致的代码无法运行&#xff0c;暂时锁死版本 pip install -U "openmim0.3.7" mim install "mmengine0.7.1" mim install "mmcv2.0.0"# Install mmdetection rm -rf mmd…

AI实战营第二期 第六节 《MMDetection代码课》——笔记7

文章目录 什么是MMDetection&#xff1f;环境检测和安装1 数据集准备和可视化2 自定义配置文件3 训练前可视化验证4 模型训练5 模型测试和推理6 可视化分析MMYOLO 环境和依赖安装特征图可视化1. 可视化 backbone 输出的 3 个通道2. 可视化 neck 输出的 3 个通道 Grad-Based CAM…

最新!2023软科中国大学排名发布!

Datawhale高校 方向&#xff1a;软科中国大学排名&#xff0c;来源&#xff1a;软科 2023年3月30日&#xff0c;高等教育专业评价机构软科今日正式发布2023“软科中国大学专业排名”。 上榜高校共有590所&#xff0c;清华大学、北京大学、浙江大学连续9年蝉联全国三甲&#xf…

ChatGPT 和对话式 AI 的未来:2023 年的进展和应用

人工智能(Artificial Intelligence)在过去一段时间以来以前所未有的速度快速发展。从自动化日常任务到重要提醒的设定,AI以各种方式渗透到我们的生活中。然而,在这个领域中迈出的最重要一步是ChatGPT。 ChatGPT被瑞银(UBS)评为“有史以来增长最快的消费者应用程序”,于…

月薪13K!从零开始,小白转行程序员,三个月实现人生逆转~

思绪运转之间&#xff0c;上班也已经有一周了&#xff0c;我有想过给的所有老师都写一封感谢信的&#xff0c;但发现工作量太大了&#xff0c;只能用这一封信来表达对所有老师们的感谢。 软件测试&#xff0c;一个陌生的领域&#xff0c;对于一个毫无经验的小白来说&#xff0…

ChatGPT生成一篇文章:关于Docker

如今AI智能如火如荼&#xff0c;如果不会点ChatGPT总感觉有点落后了。最近刚好重新复习了一遍Docker&#xff0c;这里尝试通过ChatGPT来生成一篇关于Docker文章。来看效果。 1、什么是Docker Docker是一种容器化技术&#xff0c;可以将应用程序和它们的依赖项封装在一个虚拟的…

自主安装IPA文件到iPhone上

1.电脑下载iTunes&#xff0c;手机使用数据线连接在电脑上&#xff0c;一定要选择信任电脑 2.打开iTunes&#xff0c;点击手机图标 3.拖拽已下载的IPA文件到我的设备&#xff0c;蓝色高亮处&#xff0c;可以看到顶部的进度条&#xff0c;进度条完了可以查看手机&#xff0c;已…

iPhone 直接安装 .ipa包

有些App因为各种原因&#xff0c;不能直接通过App Store下载到&#xff0c;以前是可以在网上找到.ipa文件通过iTunes直接安装的。但是现在的版本已经不支持了。 官方的工具不好用&#xff0c;只好用民间的了。我们在电脑上下载一个爱思助手&#xff0c;然后将手机连接到电脑上…

实现 ipad 上看来自 v4l2 上的摄像头视频

配合 http://blog.csdn.net/sunkwei/archive/2011/06/07/6530343.aspx 实现在 ipad 上观看来自 v4l2 的摄像头视频. 先上ipad 抓屏图 这个做的很粗糙, 而且有些 opengl es 的概念也没有搞明白, 慢慢再补充吧.

【iOS开发】ipa安装到手机上的三种方式

转载地址&#xff1a;ipa安装到手机上的三种方式 ipa包 安装三种方式&#xff0c;优先推荐第一种方法&#xff08;通过iTunes安装&#xff09;。 1、通过iTunes安装 数据线连接手机之后&#xff0c;会自动连接iTunes&#xff0c;&#xff08;第一次连接的时候会提示是否信任…

iphone或者ipad上安装自己打包的ipa文件

对于非ios开发者来说&#xff0c;这确实是一个问题&#xff0c;但我懂的也不多&#xff0c;也是抱着试试的态度安装了下&#xff0c;之前我以为安装ipa和在安卓手机上安装apk一样&#xff0c;qq或者微信传文件下载点击就可以安装了&#xff0c;但这个ipa如果在iphone上这样做&a…

苹果如何安装ipa(亲测有用,无需越狱)

方法一 懒省事使用爱思助手即可&#xff08;需要签名&#xff09; 方法二 1.下载cydiaimpactor&#xff08;无需签名&#xff09; 官方地址 百度云下载&#xff1a;https://pan.baidu.com/s/1rYIG4go-fOEHarSjziA1eg 提取码&#xff1a;3b48 2.连上苹果手机&#xff0c;启动cy…