python读取文本文档_python读取感兴趣的txt文件的内容

自己编写txt文件如下:

a6b5e50f5ed1?utm_campaign=hugo&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

txt内容

需求是取绩点的分数,统计绩点大于3.0的人数

UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 21: illegal multibyte sequence

读取txt的时候,若出现这种情况,则在后面附上,encoding="utf-8"即可。

f = open("C:/Users/eadhaw/Desktop/1122/test.txt","r",encoding="utf-8")

f = open("C:/Users/eadhaw/Desktop/1122/test.txt","r",encoding="utf-8")

line = f.readline() # 读取第一行

line = line[:-1] # 去掉换行符,不然打印 line 的时候会自动换行

print(line) # 打印第一行

a=[]

i = 0

while line: # 这里用 while 不是很好,读取完最后一行的时候,还会有最后一个空字符

line = f.readline()

line = line[:-1] # 去掉换行符,不然打印 line 的时候会自动换行

a = line.split(' ')[-1]

b = float(a) # str转换为浮点型才能进行大小比较

if (b>3.0):

print(line) # 打印绩点大于3.0的同学和其绩点

i = i+1

print("绩点大于3.0的同学一共:{}个".format(i)) # 统计人数

虽然可以达到目的,但是有一个缺点:不能只在最后才输出统计人数

a6b5e50f5ed1?utm_campaign=hugo&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

未优化结果图

优化处理

f = open("C:/Users/eadhaw/Desktop/1122/test.txt","r",encoding="utf-8")

lines = f.readlines() # 以 list 存储,每一行当作一个元素

print(lines)

a=[]

i = 0

lines = lines[1:] # 第一行不要,即 list的第一个元素不要

print(lines)

for line in lines:

line = line[:-1] # 去掉换行符,不然打印 line 的时候会自动换行

# print (line)

# print(type(line))

a = line.split(' ')[-1]

# print(a)

b = float(a) # str转换为浮点型才能进行大小比较

if (b>3.0):

print(line) # 打印绩点大于3.0的同学和其绩点

i = i+1

f.close()

print("绩点大于3.0的同学一共:{}个".format(i)) # 统计人数

a6b5e50f5ed1?utm_campaign=hugo&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

优化处理结果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值