1.csv的存储操作
""" csv两种写入操作 csv就是字符分隔的纯文本,字段间的分隔符是其他字符或字符串 csv写入之后的文件可以直接Excel打开 """ import csv def write_csv_demo(): headers = ["username", "age", "height"] values = { ("张三", 18, 180), ("李四", 19, 190), ("王五", 20, 160) } # 写入编码utf-8防止乱码,newline默认\n换行,防止换行让它等于空字符串 with open("classroom.csv", "w", encoding="utf-8", newline="") as fp: # 调用csv库的writer()方法并传入fp文件句柄生成<class '_csv.writer'>实例对象 writer = csv.writer(fp) # 调用实例对象的方法writerow()写入一行,默认逗号分隔。传入delimiter=" "可以修改列与列之间的分隔符 writer.writerow(headers) # 写入多行是在writerow的基础之上添加map()方法传入一个函数和列表循环写入 writer.writerows(values) def write_csv_site(): headers = ["username", "age", "height"] values = [ {"username": "张三", "age": 18, "height": 180}, {"username": "李四", "age": 19, "height": 190}, {"username": "王五", "age": 20, "height": 160}, ] with open("classroom1.csv", "w", encoding="utf-8", newline="") as fp: # DictWriter需要传入一个文件句柄和字典的key列表 writer = csv.DictWriter(fp, headers) # 正式写入需要调用writeheader方法传入文件头 writer.writeheader() # 写入多行文本 writer.writerows(values) if __name__ == '__main__': write_csv_demo() write_csv_site()
2.csv的读取操作
"""读取csv文件的三种方式""" import csv # 在这里也可以使用pandas的read_csv()方法读取csv中的数据 import pandas def read_csv_demo(): # 优势:操作简单。劣势:数据排序混乱时取值可能报错 with open("classroom.csv", "r", encoding="utf-8") as fp: # reader是一个迭代器 reader = csv.reader(fp) # 执行一次next,指针跳过一位,可以不获取标题 next(reader) for x in reader: print(x) # 可用列表下标x[1]获取具体对象 def read_csv_site(): # 优势:即便数据混乱也可以通过key取值。劣势:稍复杂一点 with open("classroom1.csv", "r", encoding="utf-8") as fp: # 使用DictReader创建的reader对象不会包含标签这一行的数据 reader = csv.DictReader(fp) # 遍历reader迭代器返回的是一个有序字典 for x in reader: value = {"name": x["username"], "age": x["age"]} print(value) def pandas_csv_read(): # 常用在数据分析,方便读取 content = pandas.read_csv("classroom.csv") print("=" * 50) print(content) if __name__ == '__main__': read_csv_demo() read_csv_site() pandas_csv_read()
3.json的存储和读取操作
"""json文件存储 JavaScript语言中,一切都是对象。因此,任何支持的类型都可以通过JSON来表示,例如字 符串、数字、对象、数组等,但是对象和数组是比较特殊且常用的两种类型。 json构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。 对象:它在JavaScript中是使用花括号{}包裹起来的内容,数据结构为{keyl:valuel, key2: value2 }的键值对结构。 和python中的字典相似 数组:数组在 JavaScript 是方括号[]包裹起来的内容,数据结构为["python", "javascript" , "vb"]的索引结构。 和python中的列表相似 """ # JSON的表现形式。 [{"name": "Jim", "age": "24"}, {"name": "Anla", "age": "20"}] """采用python中的json库来一波操作""" import json # json字符串的表示需要使用双引号。单引号会报错 text = """[{"name": "Jim", "age": "24"}, {"name": "Anla", "age": "20"}]""" # 类型是str print(type(text)) # 调用loads()方法读取字符串 content = json.loads(text) # 转换成列表 print(content) # 列表索引取值之后字典键名取值。不建议使用此方法,字典无取值对象会报错 print(content[0]["name"]) # 列表索引取值之后字典键名取值。建议使用此方法,字典无取值对象会返回默认值 print(content[1].get("name", None)) # 类型是list print(type(content)) # 数据写入文件,utf-8编码支持中文显示 with open("data.json", "w", encoding="utf-8") as f: # dumps()方法将json对象转化为字符串,f文件句柄调用write()方法把字符串写入文件 f.write(json.dumps(text, indent=2)) # indent可以让写入的json字符串自带缩进 # 文件读取数据,utf-8编码支持中文显示 with open("data.json", "r", encoding="utf-8") as f: # 用变量接收以"r"形式读取的文件内容 content = f.read() # 通过loads()方法解析json字符串 text = json.loads(content) print(text)