2021-10-12

Python 21/10/12 中文文件的操作 遍历 指定删除

根据签名和班级名单,找出

将两份名单,分别导入两个list

版权声明:
 * 作者: 子子_Vanessa
 * Copyright (C) 2021 10 12
 */python
 # 根据签名和班级名单,找出谁没有签到,谁重签名了,谁不是班级人员
# 将两份名单,分别导入两个list

f_now = open('C:\\UoeWork\\接龙人员.txt', 'rb')
f_all = open('C:\\UseWork\\班级人员1.txt', 'rb')
# 此时有参数‘rb'不可以再在括号内加encoding参数

# 先处理 接龙人员:
l_now = []
l_all = []
while True:
    line = f_now.readline().decode(encoding='gbk')  # utf-8不够时,用gbk
    if line:
        name = list(filter(lambda ch: ch not in ' \t1234567890 .\r\n', line))   # 用函数 去除’‘内东西

        name2 = ''  # name 读出来是list 这里遍历改为str
        for i in name:
            name2 += i
        l_now.append(name2)    # 存入
    else:
        break

# 再处理 班级人员1 方法同上
while True:
    line = f_all.readline().decode(encoding='gbk')
    if line:
        name = list(filter(lambda ch: ch not in ' \t1234567890 .\r\n', line))
        name2 = ''
        for i in name:
            name2 += i
        l_all.append(name2)
    else:
        break

f_all.close()   # 关闭文件
f_now.close()

l_num = [0] * len(l_all)    # 创建大小和l_all相同的空列表
l_not = []

for name in l_now:
    flag = 0
    for i in range(0, len(l_all), 1):
        if name == l_all[i]:
            l_num[i] += 1  # 签到的为1 未签到为0 重复签到的>1
            flag = 1
    if flag == 0:
        l_not.append(name)  # 不属于这个班的人

notSignIn = []  # 存贮 没签到的人
reSignIn = []  # 存贮 重复的人

for i in range(0, len(l_num), 1):
    if l_num[i] == 0:
        notSignIn.append(l_all[i])  # 没签到的人
    elif l_num[i] > 1:
        reSignIn.append(l_all[i])  # 重复的人

print("未签到的同学为:", notSignIn)
print("重复签到的同学为:", reSignIn)
print("不属于本班的同学为:", l_not)

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值