对CSV文件和XML文件的处理
来源:互联网 发布:哪几个网站能查数据 编辑:程序博客网 时间:2024/05/23 01:24
1.重新格式化数据并写入到CSV文件中
#!/usr/bin/python3#coding:utf-8#重新格式化数据(日期)并写入到CSV文件import csvfrom datetime import datetimedef convertDate(item): theDate = item[-1] #从记录中提取日期域 dateObj = datetime.strptime(theDate,'%Y-%m-%d') #解析(parse)日期域 dateStr = datetime.strftime(dateObj,'%m/%d/%Y') #格式化(format)日期对象 item[-1] = dateStr return itemif __name__ == '__main__': with open('ToolhireData/tooldesc.csv') as td: #打开原始CSV文件 rdr = csv.reader(td) items = list(rdr) #读取记录并保存在items的列表 items = [convertDate(item) for item in items] with open("./ToolhireData/tooldesc2.csv",'w',newline = '') as td: wrt = csv.writer(td) for item in items: wrt.writerow(item)2.添加标题行(键值)到CSV文件中
#!/usr/bin/python3#coding:utf-8#将标题行(键值)添加到CSV文件#DicReader 返回字典dict 而reader 返回列表listimport csvfields = ['ItemID','Name','Description','Owner', 'Price','Condition','DateRegistered']with open('ToolhireData/tooldesc2.csv') as td_in: rdr = csv.DictReader(td_in,fieldnames = fields) #初始化fieldnames items = [item for item in rdr]with open('ToolhireData/tooldesc3.csv','w',newline = '') as td_out: wrt = csv.DictWriter(td_out,fieldnames = fields)#通过fieldnames指定了域的顺序(字典保存的域是无序的) wrt.writeheader() wrt.writerows(items) #将整个items列表一次写出
3.使用ElementTree 解析 XML
#!/usr/bin/python3#coding:utf-8#使用ElementTree 解析 XML 文件#提取日期并计算书本的平均借出时间import xml.etree.ElementTree as ET #导入ElementTree解析器import datetime as dtdef parseDates(filename): dates = [] rows = [] dom = ET.parse(filename) #文件解析 #root = dom.getroot() #得到文件根结点 for node in dom.iter('*'): #查找文件中所有内容 ‘*’通配符 if 'Row' in node.tag: rows.append(node) #结点列表 #检查结点列表中的每一行# for row in rows: row_dates = [] for node in row.iter('*'): for key,value in node.attrib.items(): #检查特性key为‘Type’,value为'DateTime'的行 if 'Type' in key and 'DateTime' in value: row_dates.append(node.text) if len(row_dates) == 2: #如果row_dates列表包含两个日期(借书日期,还书日期),则添加到dates列表 dates += row_dates return datesdef calculateAverage(dates): loan_periods = [] while dates: lent = dates.pop(0).split('T')[0] ret = dates.pop(0).split('T')[0] lent_date = dt.datetime.strptime(lent,'%Y-%m-%d') ret_date = dt.datetime.strptime(ret,'%Y-%m-%d') loan_periods.append( (ret_date - lent_date).days ) average = sum(loan_periods)/len(loan_periods) return averageif __name__ == '__main__': dates = parseDates('toolhire.xml') avg = calculateAverage(dates) print('Average loan period is: {} days'.format(avg))
0 0
- 对CSV文件和XML文件的处理
- 获取csv文件对逗号和引号的处理
- python对csv文件的处理
- python对CSV、Excel文件的处理
- 存储过程导出csv文件,利用xml对csv文件内容进行批量处理
- DataTable 对xml、excel、csv 对文件的导入和导出功能
- CSV文件读取和处理
- C#获取CSV文件内容对逗号和引号分隔的处理
- C#获取CSV文件内容对逗号和引号分隔的处理
- 对XML文件处理
- CSV文件的转义处理
- CSV文件的转义处理
- DataGridView生成CSV,XML 和 EXCEL文件
- DataGridView生成CSV,XML 和 EXCEL文件
- Java读取CSV和XML文件方法
- python 处理csv文件的过程对换行符的处理
- 读取csv文件并使用pandas.Series.apply进行处理时,对header=?的处理
- Python 处理CSV文件
- PCL——泊松表面重建
- Revit2016中文版64位注册机
- Gradle's dependency cache may be corrupt:Gradle的依赖库出错
- 课程实验,实现网络图片的查看!
- POJ 1166 The Clocks 笔记
- 对CSV文件和XML文件的处理
- SQL 优化原则
- Java基础--方法
- BZOJ 1854: [Scoi2010]游戏
- C# 服务端推送,十步十分钟,从注册到推送成功
- Python数据分析4
- Spring MVC编程注意事项
- Serializable详解
- case when then 中判断null的方法