【Python学习】Day-08 seek和tell函数、CSV文件的读写

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值