文章目录
1. seek和tell函数的使用方法
seek函数有两个参数
seek(参数1,参数2):能够将指针移动指定的偏移量
参数1:移动的偏移量(默认0)
参数2: 0:将指针移动到文件开头、1(默认):指针指向当前位置、2:将指针移动到文件尾部
tell()函数可用来查看当前指针的位置
f1 = open('../file/界面.txt', 'r', encoding='utf-8')
print(f1.read())
# f1.seek(0,0):将指针移动到文件开头
# 一个英文符号对应一个偏移量,一个汉字、中文符号对应三个偏移量
# Python中有序序列(容器)下标从0开始;
# Python操作文件时偏移量从1开始
# f1.seek(6,0):将指针移动到文件开头,再增加6个偏移量
f1.seek(21,0)
print(f1.read())
print(f1.tell())
# 换行:
# Linux:\n
# windows:\r\n
# mac:\r
f1.close()
运行结果
欢迎进入系统!
**************************
** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **
**************************
**************************
** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **
**************************
202
2. CSV文件的读写
2.1 csv文件的写入操作
# csv文件本质是文本文件,只是以表格的形式展示数据。
import csv
# 使用csv内置模块进行csv文件的读写操作
# 1. 返回一个文件对象
# windows或者linux操作系统,写入csv文件必须加newline = '',否则会产生空行
# newline = '' 将换行(\n)转为空
f1 = open('../file/店铺信息.csv', 'w', encoding='utf-8-sig', newline='')
# print(f1)
# 2. 创建写方法对象
mywrite = csv.writer(f1)
# 3. 写入列名
# 单行写入 writerow
col = ['店铺名', '人均', '口味', '环境', '服务']
mywrite.writerow(col)
# 多行写入 writerows
datas = [
['吼堂火锅', 126, 4.5, 4.7, 4.6],
['小龙坎', 100, 4.8, '4.8', 4.7],
['巴蜀大宅门', '70', '4.8', '4.6', 4.8]
]
# 4. 写入对应信息
mywrite.writerows(datas)
f1.close()
print('写入完成')
2.2 csv文件的读取操作
# csv文件读操作
f2 = open('../file/店铺信息.csv', 'r', encoding='utf-8-sig')
# 创建读方法
myreader = csv.reader(f2)
# print(myreader)
for i in myreader:
# print(i)
for j in i:
print('{:<8}'.format(j), end='\t')
print()
f2.close()
3. 北京高档酒店价格分析
3.1 计算平均分
import csv
f1 = open('../file/北京高档酒店价格分析.csv', 'r', encoding='utf-8', newline='')
myreader = csv.reader(f1)
data = list(myreader)
# next(myreader)
for i in data[1:]:
# for i in myreader:
average = round((float(i[3])+float(i[4])+float(i[5])+float(i[6]))/4, 2)
name = i[0]
result = f'{name}的平均分为:{average}'
print(result)
f1.close()
3.2 计算酒店的卫生、服务、设施、位置这四个因数的平均分,并写入文件
f2 = open('../file/北京高档酒店价格分析new.csv', 'w', encoding='utf-8-sig', newline='')
mywrite2 = csv.writer(f2)
data[0].append('平均分')
for i in data[1:]:
avg_score = round((float(i[3])+float(i[4])+float(i[5])+float(i[6]))/4, 2)
i.append(avg_score)
mywrite2.writerows(data)
f2.close()
3.3 使用pandas实现代码
import pandas as pd
f_p = pd.read_csv('../file/北京高档酒店价格分析.csv')
# f_p['平均分']
f_p['卫生评分'] = f_p['卫生评分'].astype(float)
f_p['服务评分'] = f_p['服务评分'].astype(float)
f_p['设施评分'] = f_p['设施评分'].astype(float)
f_p['位置评分'] = f_p['位置评分'].astype(float)
f_p['平均分'] = (f_p['卫生评分'] + f_p['服务评分'] + f_p['设施评分'] + f_p['位置评分'])/4
f_p