版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSON数据处理教学目标1.掌握JSON序列化(dumps)
2.掌握JSON反序列化(loads)
3.掌握JSON文件操作(dump/load)JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。在Python中,JSON常用于API交互、配置文件和数据存储,将Python数据结构如字典、列表转换为字符串,或反之。核心概念:JSON基于键值对,类似于Python字典,支持嵌套。优势:跨语言兼容、紧凑。应理解JSON不是Python独有,而是通用格式。注意:JSON字符串用双引号,键必须是字符串。1、什么是JSON
#JSON字符串示例(非代码执行)json_str='{"name":"Alice","age":30,"is_student":false}'#JSON格式字符串,键用双引号#这不是Python字典,而是字符串表示的JSON数据导入库使用import语句,将库功能引入当前脚本。核心概念:导入后,可序列化(PythontoJSON)和反序列化(JSONtoPython)。适合处理API响应或文件。注意:json处理不支持所有Python类型,如set需转换。2.导入json库importjson#导入标准库json,用于JSON操作data={"name":"Bob","age":25}#Python字典json_data=json.dumps(data)#序列化为JSON字符串print(json_data)#输出:{"name":"Bob","age":25}序列化是将Python对象转换为JSON字符串的过程,使用json.dumps()。核心概念:参数如indent美化输出,sort_keys排序键。处理列表、元组、None等,支持嵌套结构。用于API发送数据。注意:非标准类型如datetime需自定义编码器。3.JSON序列化(dumps)importjson#导入jsonperson={"name":"Charlie","hobbies":["reading","coding"],"age":None}#复杂字典json_str=json.dumps(person,indent=4,sort_keys=True)#序列化,美化缩进并排序print(json_str)#输出格式化JSON字符串反序列化是将JSON字符串转换为Python对象的过程,使用json.loads()。核心概念:自动映射JSON对象到字典,数组到列表。处理布尔、null、数字。用于解析API响应。注意:无效JSON引发JSONDecodeError,需异常处理。4.JSON反序列化(loads)importjson#导入jsonjson_str='{"name":"David","scores":[90,85],"active":true}'#JSON字符串data=json.loads(json_str)#反序列化为Python字典print(data["name"])#输出:David,访问字典键JSON文件操作使用json.dump()写入文件,json.load()读取。核心概念:与open()结合,确保UTF-8编码。用于持久化数据如配置。注意:dump支持ensure_ascii=False处理非ASCII。5.JSON文件操作(dump/load)importjson#导入jsondata={"city":"NewYork","population":8419600}#数据withopen('data.json','w')asf:#打开文件写入json.dump(data,f,indent=4)#写入JSONwithopen('data.json','r')asf:#打开文件读取loaded=json.load(f)#读取为字典print(loaded["city"])#输出:NewYorkJSON文件操作使用json.dump()写入文件,json.load()读取。核心概念:与open()结合,确保UTF-8编码。用于持久化数据如配置。注意:dump支持ensure_ascii=False处理非ASCII。5.JSON文件操作(dump/load)importjson#导入jsondata={"city":"NewYork","population":8419600}#数据withopen('data.json','w')asf:#打开文件写入json.dump(data,f,indent=4)#写入JSONwithopen('data.json','r')asf:#打开文件读取loaded=json.load(f)#读取为字典print(loaded["city"])#输出:NewYorkJSON与字典互转使用dumps/loads。在Python中,字典直接dumps,JSONloads到字典。用于数据操纵。核心概念:转换无缝桥接。6.JSON与字典转换importjson#导入dict_data={"a":1}#字典json_str=json.dumps(dict_data)#转JSONmodified_dict=json.loads(json_str)#转回字典modified_dict["b"]=2#修改print(json.dumps(modified_dict))#输出:{"a":1,"b":2}嵌套JSON处理多层结构,使用递归或键路径访问。在Python中,loads后字典导航。用于复杂API数据。示例中,提取内层值。核心概念:嵌套要求层级访问。7.处理嵌套JSONimportjson#导入nested_json='{"outer":{"inner":[1,2]}}'#嵌套字符串data=json.loads(nested_json)#解析print(data["outer"]["inner"][0])#输出:1,访问嵌套小结1.JSON是一种轻量级的数据交换格式,基于键值对,类似于Python字典。2.Python的json库支持序列化(将Python对象转为JSON字符串)和反序列化(将JSON字符串转为Python对象)。3.JSON文件操作可以通过json.dump()和json.load()与文件读写结合。4.JSON与Python字典可以通过json.dumps()和json.loads()进行互转。CSV文件处理教学目标1.了解什么是CSV文件
2.导入csv模块并了解其基本功能
3.掌握使用csv.reader读取CSV文件
4.掌握使用csv.writer写入CSV文件CSV(Comma-SeparatedValues,逗号分隔值)是常用纯文本表格数据格式,用于存储数据库导出、电子表格等结构化数据:每行对应一条记录,列以逗号分隔(首行常为标题行),兼具简单性、跨平台兼容性与轻量特性,是数据交换的标准格式。核心概念:含分隔符(默认逗号,可自定义)、引用符(双引号,避免含逗号字段解析错误)、转义字符、编码(encoding,如UTF-8以支持多语言)。与JSON/XML相比,CSV更轻量,但不支持嵌套结构。1、什么是CSV文件及其重要性importos#导入os模块用于文件操作ifos.path.exists('data.csv'):#检查文件是否存在,避免错误withopen('data.csv','r',encoding='utf-8')asfile:#使用with打开文件,确保自动关闭;指定编码防止乱码content=file.read()#读取整个文件作为字符串print(content)#输出内容,展示CSV结构:行以换行分隔,列以逗号分隔核心概念:Python的标准库包含csv模块,无需pip安装,直接导入即可使用。它提供读取和写入CSV的专用工具,比手动字符串操作更可靠和高效。2.导入csv模块并了解其基本功能importcsv#导入csv模块,开始使用其功能print(csv.version)#输出'1.0'或类似,确认标准库版本dialect=csv.get_dialect('excel')#获取Excel兼容dialectprint(f"Delimiter:{dialect.delimiter}")#输出默认分隔符','print(f"Quotechar:{dialect.quotechar}")#输出默认引用符'"'withopen('data.csv','r',newline='',encoding='utf-8')ascsvfile:#newline=''防止多余空行;encoding处理国际字符reader=csv.reader(csvfile,dialect='excel')#创建reader对象,使用指定dialectforrowinreader:#迭代每行,返回列表print(row)#示例输出:['Name','Age','City']核心概念:处理标题行(使用next(reader)跳过或存储);错误处理(如csv.Error异常);内存效率(逐行读取)。在实际中,常结合循环过滤数据,例如只读取年龄大于18的记录。3.使用csv.reader读取CSV文件importcsv#导入模块withopen('students.csv','r',newline='',encoding='utf-8')ascsvfile:#安全打开文件reader=csv.reader(csvfile,delimiter=',',quotechar='"',skipinitialspace=True)#创建reader,忽略字段前空格header=next(reader,None)#读取标题行,如果无则Noneifheader:print("Header:",header)#输出['Name','Age','Grade']forrowinreader:#遍历数据行iflen(row)==3:#确保行完整name,age,grade=row#解包到变量print(f"{name}is{age}yearsoldwithgrade{grade}")#格式化输出,age可转换为int(int(age))try:exceptcsv.Errorase:#捕获解析错误print(f"Error:{e}")#如分隔符不匹配csv.writer用于将数据写入CSV,支持列表或元组输入,自动添加分隔符和引用。写入模式包括'w'(覆盖)和'a'(追加)。核心概念:writerow()写单行,writerows()写多行;quoting参数控制引用策略(如csv.QUOTE_ALL全部引用);确保数据类型一致,避免写入None导致空字段。4.使用csv.writer写入CSV文件importcsv#导入模块header=['Product','Price','Quantity']#标题列表rows=[['Apple',1.5,10],['Banana',0.75,20]]#数据行列表withopen('inventory.csv','w',newline='',encoding='utf-8')ascsvfile:#'w'模式创建或覆盖文件writer=csv.writer(csvfile,delimiter=',',quoting=csv.QUOTE_MINIMAL)#创建writer,只引用必要字段writer.writerow(header)#写入标题writer.writerows(rows)#批量写入数据行异常处理捕获如ValueError无效行,使用try。在Python中,集成pandas高效读写。处理确保鲁棒,集成扩展功能如过滤。核心概念:异常防止崩溃,集成如pandas简化复杂任务。5.CSV异常处理与集成importcsv#导入csvtry:#尝试读取withopen('bad.csv','r')asfile:#打开reader=csv.reader(file)#readerforrowinreader:print(row)#处理exceptcsv.Errorase:#捕获CSV错误print(f"Error:{e}")#输出importpandasaspd#集成pandasdf=pd.read_csv('data.csv')#读取为DataFrameprint(df.head())#输出前5行pandasread_csv读取CSV为DataFrame,支持参数如sep自定义分隔。在Python中,结合csv预处理。用于数据分析。核心概念:pandas增强csv,添加统计功能。6.CSV与pandas结合importpandasaspd#导入pandasdf=pd.read_csv('large.csv',sep=';',usecols=['col1','col2'])#读取,指定分隔和列df=df[df['col1']>10]#过滤行print(df.describe())#输出统计清洗处理缺失、重复,使用pandasdropna或drop_duplicates。在Python中,fillna填充。用于准备分析数据。核心概念:清洗提升数据质量。7.CSV数据清洗importpandasaspd#导入df=pd.read_csv('dirty.csv')#读取df=df.dropna(subset=['key_col'])#删除缺失行df=df.drop_duplicates()#去除重复df['price']=df['price'].fillna(0)#填充0df.to_csv('clean.csv',index=False)#保存小结1.CSV文件是一种简单的文本格式,用于存储表格数据2.Python的csv模块提供了专用的读取和写入CSV文件的工具
3.使用csv模块时可以处理各种数据完整性和格式问题
4.pandas库可以用于更高级的CSV数据处理,如数据清洗和复杂的数据过滤XML文件处理教学目标1.了解什么是XML文件
2.掌握ElementTree解析XML文件
3.掌握ElementTree创建和写入XML文件
4.了解查找元素、处理属性和命名空间XML(ExtensibleMarkupLanguage,可扩展标记语言)是一种用于存储和传输数据的结构化文本格式,通过自定义标签来描述数据结构,与HTML类似但更注重数据而非显示。核心概念:根元素(root,整个文档的顶层元素);嵌套结构(树状层次);验证(使用DTD或Schema确保格式正确,但Python内置模块不直接支持);与JSON的比较(XML支持属性和注释,但更冗长)。XML在实际中的作用巨大,例如在企业系统中交换数据,或在游戏开发中存储关卡信息。1、什么是XML文件及其重要性importos#导入os模块用于文件操作ifos.path.exists('data.xml'):#检查文件是否存在,避免错误withopen('data.xml','r',encoding='utf-8')asfile:#使用with打开文件,确保自动关闭;指定编码防止乱码content=file.read()#读取整个文件作为字符串print(content)#输出内容,展示XML结构:标签嵌套、属性和文本核心概念:Python的标准库包含xml.etree.ElementTree模块(简称ET),无需pip安装,直接导入即可使用。它提供解析、构建和操作XML树的工具,比手动正则表达式或字符串操作更可靠和高效,ET模块在数据处理中的作用是桥梁。2.导入xml.etree.ElementTree模块并了解其基本功能importxml.etree.ElementTreeasET#导入ElementTree模块,别名为ET,便于使用#检查模块版本(可选,用于兼容性验证)print(ET.VERSION)#输出模块版本,如'1.3.0'#基本解析准备:从字符串创建树xml_string='<root><child>Text</child></root>'#示例XML字符串root=ET.fromstring(xml_string)#从字符串解析为ElementTree的根元素print(root.tag)#输出根标签'root'#遍历子元素forchildinroot:#迭代根的子元素print(child.tag,child.text)#输出'child''Text'#访问属性(假设有属性)#root.attrib.get('attr')#获取属性值,如果存在ET.parse是读取XML的核心工具,将文件解析为ElementTree对象核心概念:解析模式(parse文件路径或文件对象);错误处理;迭代finditer或iter方法查找节点。在实际中,常结合循环提取数据。3.使用ElementTree解析XML文件importxml.etree.ElementTreeasET#导入模块try:tree=ET.parse('students.xml')#解析文件,返回ElementTree对象root=tree.getroot()#获取根元素print("Roottag:",root.tag)#输出'students'forstudentinroot:#遍历根的子元素(student)name=student.find('name')#查找子元素'name'age=student.find('age')#查找子元素'age'ifnameisnotNoneandageisnotNone:print(f"Student:{name.text},Age:{age.text}")#输出文本内容id_attr=student.get('id')#获取属性'id'print("ID:",id_attr)#输出属性值exceptET.ParseErrorase:#捕获解析错误print(f"Parseerror:{e}")#如语法不正确ET.Element用于创建XML元素,支持subelement添加子元素、set设置属性。核心概念:构建树(从根开始添加元素);text和tail属性(文本和尾随文本);编码和声明(write参数控制)。4.使用ElementTree创建和写入XML文件importxml.etree.ElementTreeasET#导入模块#创建根元素root=ET.Element('inventory')#创建根标签'inventory'#添加子元素item1=ET.SubElement(root,'item')#添加子元素'item'item1.set('id','1')#设置属性'id'name1=ET.SubElement(item1,'name')#添加孙元素'name'name1.text='Apple'#设置文本price1=ET.SubElement(item1,'price')#添加'price'price1.text='1.5'#设置文本#创建树并写入文件tree=ET.ElementTree(root)#从根创建ElementTreetree.write('output.xml',encoding='utf-8',xml_declaration=True)#写入文件,包含声明find、findall和iter方法用于查询元素,支持XPath表达式。命名空间(namespace)处理使用{uri}tag格式或register_namespace。核心概念:XPath支持(如.//tag递归查找);属性操作(get、set、items);命名空间映射(namespaces参数)。5.查找元素、处理属性和命名空间importxml.etree.ElementTreeasET#导入模块#解析带命名空间的XMLnamespaces={'ns':'/ns'}#定义命名空间映射root=ET.parse('ns_data.xml').getroot()#解析文件#查找元素foreleminroot.findall('.//ns:child',namespaces):#使用XPath递归查找ns:childprint(elem.tag,elem.text)#输出带命名空间的标签和文本#处理属性attr_value=root.get('{/ns}attr')#获取带命名空间的属性print("Attribute:",attr_value)#修改属性elem.set('new_attr','value')#设置新属性转换XML到字典用递归遍历,字典到XML建树。在Python中,自定义函数处理。用于JSON互换。核心概念:转换桥接格式。6.XML与字典转换importxml.etree.ElementTreeasET#导入ETdefxml_to_dict(element):#函数d={element.tag:{}ifelement.attribelseelement.text}#基本children=list(element)#子ifchildren:sub=[xml_to_dict(child)forchildinchildren]#递归d[element.tag]=subiflen(sub)>1elsesub[0]#处理列表returndroot=ET.fromstring("<root><child>Text</child></root>")#解析print(xml_to_dict(root))#输出:{'root':{'child':'Text'}}XPath是路径语言查询节点。在Python中,find/findall支持XPath。用于复杂查找如//tag[@attr=value]。核心概念:XPath轴和谓词精细定位。7.XPath查询importxml.etree.ElementTreeasET#导入ETtree=ET.parse('complex.xml')#解析nodes=tree.findall('.//book[price>10]')#XPath查询价格>10的bookfornodeinnodes:#迭代print(node.find('title').text)#输出标题小结1.XML是一种通过自定义标签描述数据结构的可扩展标记语言
2.xml.etree.ElementTree提供了解析、构建和操作XML树的工具3.ElementTree模块支持从文件或字符串解析XML,创建新的XML文件,并可以处理XML的属性和命名空间4.XML文件可以通过ElementTree模块与字典进行互转
数据库连接与操作教学目标1.了解数据库及作用
2.学习使用sqlite3模块数据库是一种用于存储、检索和管理数据的结构化系统,它通过表格、行和列组织信息,支持高效的查询和操作。核心概念:数据库(Database):数据集合的容器,通常包含多个表。表(Table):类似于电子表格,由行(记录)和列(字段)组成。1、什么是Python数据库?
importos#导入os模块用于文件操作db_file='example.db'#定义数据库文件名ifos.path.exists(db_file):#检查数据库文件是否存在print(f"Databasefile{db_file}exists.")#输出存在信息else:print(f"Databasefile{db_file}doesnotexistyet.")#输出不存在信息#在实际中,这里可创建连接以生成文件Python的标准库包含sqlite3模块,无需pip安装,直接导入即可使用。核心概念:导入模块:importsqlite3,开始使用数据库功能。sqlite3.connect(path),path为数据库文件路径,若不存在则创建。异常处理:sqlite3.Error捕获连接错误,如权限问题。关闭连接:conn.close(),释放资源。2.使用sqlite3模块连接SQLite数据库cursor.execute()是执行SQL的核心,返回结果通过fetchone()、fetchmany()或fetchall()获取。核心概念:执行查询:cursor.execute(sql,params),params为元组,避免注入。3.执行SQL查询和获取结果importsqlite3#导入模块conn=sqlite3.connect('students.db')#连接数据库conn.row_factory=sqlite3.Row#设置行工厂为Row,便于键访问cursor=conn.cursor()#创建游标cursor.execute("SELECT*FROMstudentsWHEREage>?",(18,))#执行带参数的SELECTresults=cursor.fetchall()#获取所有结果forrowinresults:#遍历结果print(f"ID:{row['id']},Name:{row['name']},Age:{row['age']}")#输出,使用键访问conn.close()#关闭连接cursor.execute()也用于INSERT、UPDATE和DELETE,支持executemany()批量操作。核心概念:插入:INSERTINTOtableVALUES(?,?),添加新行。更新:UPDATEtableSETcol=?WHEREcondition,修改匹配行。删除:DELETEFROMtableWHEREcondition,移除行。4.插入、更新和删除数据importsqlite3#导入模块conn=sqlite3.connect('students.db')#连接cursor=conn.cursor()#游标#插入示例cursor.execute("INSERTINTOstudents(name,age)VALUES(?,?)",('Alice',20))#插入单行print("LastinsertedID:",cursor.lastrowid)#输出新ID#更新和删除cursor.execute("UPDATEstudentsSETage=?WHEREname=?",(22,'Alice'))#更新cursor.execute("DELETEFROMstudentsWHEREage<?",(20,))#删除mit()#提交所有更改conn.close()#关闭事务使用begin/commit/rollback确保原子性,如银行转账全成功或全失败。核心概念:事务:一组原子操作,使用mit()或rollback()。回滚conn.rollback(),撤销未提交更改。5.事务管理与错误处理importsqlite3#导入模块conn=sqlite3.connect('bank.db',isolation_level=None)#手动事务模式cursor=conn.cursor()#游标try:conn.execute("BEGIN")#开始事务cursor.execute("UPDATEaccountsSETbalance=balance-100WHEREid=1")#扣款cursor.execute("UPDATEaccountsS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季生物科学专业开学第一课 国际视野与专业发展讲座方案
- 福建乡镇面试题及答案
- 青少年学生《感恩父母感谢老师》感恩教育主题班会课件
- 干部值班脱岗检讨书2000字
- 省专业技术人员继续教育公需科目考试试卷及答案
- 2026中国电子竞技运动员健康防护产品市场空白点分析报告
- 2026中国食品餐饮行业市场现状供需分析及投资评估规划分析研究报告
- 2026人工智能芯片行业市场供需现状及研发投资战略规划分析研究报告
- 2026中国医疗云计算平台市场发展趋势与投资回报分析报告
- 2026瑞典绿色建筑市场监管创新政策与性能要求符合情况分析
- 2026浙江杭州市团校(杭州青年运动史馆)招聘编外工作人员1人考试参考题库及答案详解
- 国家电网试题江苏
- 希氏束起搏生理性起搏
- 2025四川九洲电器集团有限责任公司招聘光电系统总体工程师(校招)等岗位测试笔试历年参考题库附带答案详解
- 2025江苏南京栖霞区中考一模数学试卷及答案
- 花卉园艺工职业技能鉴定考试复习题库(附答案)
- 广西卫生职业技术学院招聘考试真题2025
- 《电气控制与S7-1200PLC应用》课件 第6章S7-1200 PLC程序块
- 2026年医护人员医保知识培训手册
- 钢结构更换构件施工工艺流程
- 常州滨江国有控股集团有限公司招聘笔试题库2026
评论
0/150
提交评论