数据可以存储成许多不同的格式和文件类型。某些格式存储的数据很容易被机器处理而另外一些格式存储的数据则容易被人工读取。我们具此将数据分为两大类供机器读取的数据供人读取的数据。其中供机器读取的数据类型常见的有CSV数据、JSON数据和XML数据供人读取的数据类型常见的有PDF文件、excel文件。下面将按照数据大类分别介绍其中常见数据的基础知识。一、供机器读取的数据1.CSV数据1定义CSV文件CSV文件是指将数据列用逗号分隔开的文件CSV文件中的数据被称为CSV数据类型。另外还有一种数据类型TSV同属于CSV文件数据它将数据列用制表符分隔开来。二者的区别在于CSV文件数据列用逗号‘’隔开而TSV则采用用制表符分隔数据。2查看CSV文件图1图1为一个小体量的csv文件可以看出csv文件内的每一个数据都用逗号分隔开来。另外我们发现第一行的数据个数和后面行数的数据个数相同都是3个数据且第一行的数据和后续行的数据看上去不太相同。是不是第一行的数据是后续行数据的名称我们想的方向是正确的确实如我们说构想的那样csv文件内数据的第一行类似excel表格的第一行它用于为下面行的数据定性。自此我们掌握了csv文件数据的三个特点1.数据间用逗号分隔2.第一行的数据个数与后续行的数据个数应该对应3.第一行的数据用于对下面行的数据定性。3向Python中导入CSV数据我们已经了解了什么是CSV数据下面我们需要学习如何用Python读取CSV文件中的数据。代码如下import csv # 仅读的方式打开CSV文件,并将用变量csvfile储存起来 csvfile open(csv_content.csv,r) # 使用字典读取法读取文件并将值赋予变量reader reader csv.DictReader(csvfile) for row in reader: print(row) # DictReader()方法读取的数据以字典的形式展现,其中字典的键来自于CSV文件的第一行,后面的行都是字典的值最终输出的内容如图2图22.JSON数据1定义JSON文件JSON文件采用列表加字典的形式存储数据。其中列表用于存储字典字典用于储存数据目。2查看JSON文件图3可以看到json文件中有1个列表列表中有3个字典。其中每一个字典看上去是一个用户的基础信息。json内的数据内容结构清晰分明非常便于人理解。分析json文件数据的特点1.用列表存储数据目即整体是一个列表2.json列表内是各种具有相同特性的字典3.字典内的键都一样。3向Python中导入JSON数据import json json_data open(sample-2.json).read() data json.loads(json_data) for i in data: print(i)最终输出的内容如图4图43.XML数据1定义XML文件xml文件是用标签来分类数据用标签和属性来保存数据的文件。xml数据有根标签、子标签、声名头、属性、文本这些特性。2查看XML文件图5如图5为xml文件的一部分下面我们来详细拆解文件的各部分内容。首先是开头第一行|?xml version1.0 encodingUTF-8?|,这是xml文件的声明头。其中xml向解析器声明其是xml文件version1.0表示xml的版本为1.0版本encodingUTF-8是指编码为UTF-8。第二行是|company name科技创新有限公司 establish2020|这是xml文件的根标签company其中还有内容name科技创新有限公司和establish2020这两个键值对则是根标签的属性。第三行|departments|是根标签下的一个子标签。子标签下可能还有其他的标签比如departments下还有skills标签和address标签。根标签的格式和子标签的格式为|company !-- 所有内容都写在这里 -- /company|。第七行是|name王五/name|。其中的‘王五’叫做文本。3向Python中导入JSON数据from xml.etree import ElementTree as ET # parse方法对数据进行解析返回的整个XML对象保存在tree树变量中 tree ET.parse(sample-4.xml) # 调用getroot()函数获取树的根节点 root tree.getroot() print(root) # 打印根标签最外层标签 print(dir(root)) # 打印变量root所有的方法和属性 print(list(root)) # 查看根元素的子元素 # 输入子元素标签名使用根元素的find方法获取子节点‘项目’ data root.find(projects) for observation in data: # 遍历子节点子下的内容 print(observation) # 打印子节点子下的内容项目中还存在两个子节点 print(observation.attrib) #打印其属性 for item in observation: #再次遍历两个项目下的内容 print(item) # 打印observation的内容 print(item.attrib) # 打印item的属性其中有的元素没有属性,且两个子项目均有相同的属性 print(list(item)) # 查询项目下的内容是否还有节点.发现还有module节点 for attribute in item: #遍历元素module print(attribute) # 打印元素module的内容 print(list(attribute)) # 查询是否还有节点,显示为空列表表示没有该代码包括读取xml文件和用Python解析xml文件两部分内容。4json数据中标签的方法其中常用的方法有root.attrib---获取标签的属性、root.text---获取标签内的文本内容。二、供人读取的数据1.处理excel文件1读取excel文件下面的代码向你介绍如何简单的读取分析excel文件import xlrd # 打开excel文件并将其存储在book内 book xlrd.open_workbook(sample-5.xlsx) for sheet in book.sheets(): # 查看excel文件内所有的sheet工作表名称 print(sheet.name) # 读取工作表Sheet9 sheet book.sheet_by_name(Sheet9) print(sheet.nrows) # 打印总行数 for i in range(sheet.nrows): print(sheet.row_values(i)) # 打印每一行的内容 row sheet.row_values(i) for cell in row: print(cell) # 嵌套for循环打印表格中的所有单元格内容2读写excel文件仅仅读取excel文件远达不到要求你需要调用库openpyxl来修改文件下面是修改excel表的一个简单代码希望对你有帮助。import xlrd from openpyxl import load_workbook # 设置一个空列表用于储存处理后的数据 lists [] # 读取目标文件的目标表格 book xlrd.open_workbook(test_data.xlsx) sheet1 book.sheet_by_name(Sheet1) # 设置for循环将原A列中所有浮点型的数据放在一个列表变量中 for value in sheet1.col_values(0): if type(value) float: lists.append(value) # 定义一个函数该函数接收一个列表并返回一个新列表其中新列表中的各数为原列表中相邻两数相加的值 def sum_list(list1, list2None): if list2 is None: list2 [] for i, value in enumerate(list1): # 遍历纯数字列表并将列表中的数按照两两相加的方式传给空列表 if i ! 0 and i % 2 ! 0: list2.append(list1[i] list1[i - 1]) elif i len(list1) - 1: list2.append(list1[i]) return list2 # 检查数字列表中的数据总数并赋值给新变量b b len(lists) # 设置循环变量c判断循环次数 c 0 # 写入表格1 wb load_workbook(test_data.xlsx) ws wb[Sheet1] # 利用while语法循环执行sum_list()函数操作并将新列表的值填入excel文件表1中 while b ! 1: lists sum_list(lists) b (b1)//2 c 1 target_col1 c1 # 起始列为第c1列 start_row 1 # 起始行为第一行 for value in lists: val float(value) ws.cell(rowstart_row, columntarget_col1, valueval) start_row 1 wb.save(test_data.xlsx) wb.close()2.处理PDF文件由于PDF文件规则较多难以完整的提取难度偏大。因此在本篇中不予讲述。