提取列表中的不重复项

该代码示例展示了如何使用Python处理文本文件,从一个包含重复项的列表中提取不重复的元素。通过列表推导式和enumerate函数,实现了检查每个元素是否在之前出现过,从而得到唯一元素的列表。最后,结果被写入新的文本文件。
摘要由CSDN通过智能技术生成

        同一个列表中,存在着许多重复项,可以用EXCEL的公式提取其不重复项,也可以用Python来做这件事。

        如下代码用以实现以上功能。

比较特殊的,代码中有一段关键性的“列表推导式”,结构比较复杂,我特地让GhatGPT帮我解释了一下,以便写入注释中。没想到它居然解释得非常清楚。这段解释经我些许修改后,特地保留在代码中展示给大家看——AI真的越来厉害了!

'''提取列表中的不重复项'''
# 导入日志模块
import logging
#关闭logging,比这个级别小的log全部都关闭掉
# logging.disable(logging.CRITICAL)
#定义log的基本配置
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s-%(levelname)s:%(message)s')

#切换工作目录
工作目录='G:\Xct\python\劳务工资回单'
import os
原工作目录 = os.getcwd()
logging.debug(f'原工作目录:%s' % (原工作目录))
#预存储工作目录
os.chdir(工作目录)
现工作目录 = os.getcwd()
logging.debug(f'现工作目录:%s' % (现工作目录))

#打开单列文本文件读行成表并转为子列表
import os
名单列表=[]
单列文本文件 = '三项目各月备案人员汇总.txt'
#如上文本文件必须只有单列(一般是姓名或身份证或ID号)无重复项
#记得将其另存为utf-8
with open(单列文本文件, 'r', encoding='utf-8-sig') as 文件:
    行列表 = 文件.readlines()
    for 名单 in 行列表:
        名单去空格=名单.strip()
        #将"行列表"的元素转为子列表,同时去除子列表元素首尾的
        # 制表符\t、回车符\r、换行符\n
        名单列表.append(名单去空格)
        #创建目标母列表
    print(名单列表)

#提取列表中的不重复项
原始列表=名单列表[:]
不重复元素列表 = [当前元素 for 当前索引号, 当前元素 in enumerate(原始列表) if 当前元素 not in 原始列表[:当前索引号]]
'''以下是GhatGPT的解释:
这段 Python 代码使用了列表推导式来创建一个新的“不重复元素列表”,
其中包含了“原始列表”中的所有不重复的元素。
具体来说,
这段代码首先使用了enumerate()函数来遍历“原始列表”,
同时获取每个元素的索引号和值。
然后,在列表推导式中使用了条件语句 
'if 当前元素 not in 原始列表[:当前索引号]',
该语句判断“当前元素”是否出现在“当前索引号”之前的所有元素中。
如果“当前元素”在之前的元素中没有出现过,那么它就是一个
不重复的元素,会被添加到"不重复元素列表"  中。
最终,这段代码会返回一个包含了“原始列表”中所有不重复元素
的"不重复元素列表" 。
'''
名单列表=不重复元素列表

#输出到文本文件
import os
import sys
写入文件路径 = '临时转存列表.txt'
with open(写入文件路径, 'w', encoding='utf-8-sig') as 文件:
    sys.stdout = 文件
    for 变量 in 名单列表:
        print(变量)
#打开该文本文件,删除所有不必要的符号
最终结果文件 = '输出列表.txt'
要删除的符号 = ["[", "]", ",", "'"]
with open(写入文件路径, 'a+', encoding='utf-8-sig') as 文件:
    sys.stdout = 文件
    with open(最终结果文件, 'w', encoding='utf-8-sig') as 结果:
        sys.stdout = 结果
        文件.seek(0)
        内容 = 文件.read()
        for 标点 in 要删除的符号:
            内容 = 内容.replace(标点, '')
        print(内容)
# 删除临时文件
os.remove(写入文件路径)
# 打开目录
os.startfile(工作目录)
# 用操作系统默认程序打开上述文件
os.startfile(最终结果文件)

#代码末尾恢复工作目录
os.chdir(原工作目录)
现工作目录 = os.getcwd()
logging.debug(f'恢复原工作目录:%s' % (现工作目录))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将出东方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值