csv也叫逗号分隔值文件 —— 每一行内容是通过逗号来区分出不同。
csv文件可以直接通过excel打开。以行列保存显示文件,相对excel 他只能保存数据,不能保存公式和函数
csv.reader(文件对象) —— 获取文件内容,并且以列表为单位返回每一行内容
csv的读操作:
import csv
# 1) 创建打开csv
"""
文件对象 = open()
"""
# 2) 创建reader 获取文件内容
# csv.reader(文件对象) —— 获取文件内容,并且以列表为单位返回每一行内容
# csv.DictReader(文件对象) —— 获取文件内容返回一个迭代器 ,并且以字典为单位返回开始的每一行内容
f = open('电影.csv','r',encoding="utf-8")
# read = csv.reader(f)
# print(list(read))
read= csv.DictReader(f)
print(next(read))
from re import *
with open('lagou.csv',encoding='utf-8') as f:
reader = csv.DictReader(f)
# 处理数据
cities = {}
for i in reader:
c = i['city']
m = i['salary']
result=findall(r'(\d+)k-(\d+)k',m)
# print(result)
if not result:
continue
start,end=result[0]
moneys = cities.get(c, [])
print(moneys)
moneys.append((int(start) + int(end))/2)
cities[c] = moneys
csv 的写操作:
1) 打开文件。f = open(‘data.csv’, ’ a’, )
1. csv文件写操作
1)打开文件
f = open('data.csv', 'w', encoding='utf-8')
# 2)创建writer对象
"""
a. csv.writer(文件对象) - 创建writer对象,这个对象在写入数据的时候一行对应一个列表
b. csv.DictWriter(文件对象, 键列表) - 创建writer对象,以字典为单位写入数据
"""
witer = csv.writer(f)
witer.writerows([
['姓名', '出生日期', '性别', '电话'],
['张三', '19998-7-5', '男', '119']
])
# # 一次写入一行内容
# writer.writerow(['姓名', '出生日期', '性别', '电话'])
# writer.writerow(['小明', '1999-9-9', '男', '110'])
#
# # 一次写入多行内容
# writer.writerows([
# ['小花', '2000-3-24', '女', '120'],
# ['张三', '19998-7-5', '男', '119']
# ])
# b.=====================以字典为单位写入一行内容==========================
# writer = csv.DictWriter(f, ['姓名', '出生日期', '性别', '电话'])
#
# 写入文件头(将字典的键写入到文件开头)
writer.writeheader()
# 一次写入一行内容
writer.writerow({'姓名': 'xiaoming', '出生日期': '1999-9-9', '电话':'110', '性别': '男'})
# 一次写入多行内容
writer.writerows([
{'姓名': 'xiaohua', '出生日期': '1999-9-9', '电话':'110', '性别': '男'},
{'姓名': 'zhangsan', '出生日期': '1999-9-9', '电话':'110', '性别': '男'}
])
虚拟环境:程序员需要自己创建的培养python环境。(前提:有系统环境)
系统环境:安装python的时候计算机提供的环境
环境的作用:1:提供python解释器,2:提供第三方库
虚拟环境的存在可以让第三方库或者项目分开管理。
创建虚拟环境的建议:1:工作的时候一个项目一个虚拟环境,并且将虚拟环境放在项目中。
2: 学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境全部放在一个地方。
怎么创建虚拟环境:1:使用pycharm 创建 。2:使用指令创建
认识excel文件
工作簿:一个excel文件叫做一个工作簿
工作表:一个工作簿中可以有多个工作表,至少一个工作表,
单元格:是excel 中保存数据的基本单位。
行号和列号:确定单元格的位置
获取excel文件内容:
import openpyxl
# 打开excel文件
#workboob = openpyxl.open(文件路径)
# openpyxl.load_workbook(文件路径)
workboob = openpyxl.open('三国人物数据.xlsx')
openpyxl.load_workbook('三国人物数据.xlsx')
# 获取工作簿中所有的工作表的表名
result = workbook.sheetnames
print(result)
获取工作簿对象
工作簿对象.active —— 获取活跃表(选中的表)
工作簿对象[工作表名称] —— 获取指定名字对用的工作表
workbook= openpyxl.load_workbook('三国人物数据.xlsx')
sheet1 = workbook.active
print(sheet1)
sheet2 = workbook['三国武将数据']
print(sheet2)
result= workbook.sheetnames
print(result)
获取单元:
工作表对象.cell(行号,列表)
# cell1 = sheet2.cell(8, 1)
# cell2 = sheet2.cell(12, 1)
# print(cell1, cell2)
获取单元格内容
单元格对象.value
cell1 = sheet2.cell(8,1)
cell2 = sheet2.cell(12,1)
print(cell1,cell2)
print(cell1.value,cell2.value) # 获取内容
获取最大行号和列号(保存数据的有效行和列)
工作表对象.max_row
工作表对象.max_column
print(sheet2.max_row)
print(sheet2.max_column)
column1 = []
for row in range(1,sheet2.max_row+1):
cell = sheet2.cell(row,1)
column1.append(cell.value)
print(column1)
#注意:定义列表的位置不同
# 获取第一列到第3列所有的数据
for col in range(1, 4):
column = []
for row in range(1, sheet2.max_row+1):
cell = sheet2.cell(row, col)
column.append(cell.value)
print(column)
excel文件的写操作
不管以什么方式对excel 操作,都必须保存
import openpyxl
# 1:新建工作簿
workbook = openpyxl.Workbook()
# 2:保存。工作簿对象.save(文件路径)
workbook.save('.student.xlsx')
# 实际中需要新建工作簿,需要判断工作簿是否已经存在,如果存在就不需要新建。
#用异常捕获判断文件是否存在
#方法一
try:
workbook = openpyxl.open('files/student2.xlsx')
except FileNotFoundError:
workbook = openpyxl.Workbook()
workbook.save('files/student2.xlsx')
# 方法二:
import os
# os.path.exists(文件路径) - 判断指定文件是否存在,存在返回True,不存在返回False
if os.path.exists('files/student2.xlsx'):
workbook = openpyxl.open('files/student2.xlsx')
else:
workbook = openpyxl.Workbook()
workbook.save('files/student2.xlsx')
工作表的写操作
新建工作表:工作簿对象.create_sheet(表名,下标)
# 2. 工作表的写操作
# 1)新建工作表
# 工作簿对象.create_sheet(表名, 下标)
# workbook.create_sheet()
# workbook.create_sheet('Python')
# workbook.create_sheet('Java', 0)
# workbook.save('files/student2.xlsx')
# 实际中的新建表:没有的时候才新建,有的时候直接打开
if 'Python' in workbook.sheetnames:
sheet = workbook['Python']
else:
sheet = workbook.create_sheet('Python')
workbook.save('files/student2.xlsx')
删除工作表:
工作簿对象.remove(工作表对象)
# 2)删除工作表
# 工作簿对象.remove(工作表对象)
# workbook.remove(workbook['Sheet1'])
# workbook.save('files/student2.xlsx')
# 实际中删除表:存在的时候才能删
if 'Sheet1' in workbook.sheetnames:
workbook.remove(workbook['Sheet1'])
workbook.save('files/student2.xlsx')
单元格写操作:
# 3.单元格的写操作
# 单元格对象.value = 数据
java_sheet = workbook['Java']
java_sheet.cell(1, 3).value = '电话'
java_sheet.cell(2, 1).value = None
java_sheet.cell(4, 2).value = 'stu003'
workbook.save('files/student2.xlsx')