python如何合并多个txt文件删除所有重复行并生成新文件

文件夹内有许多个这样的txt文件全都是类似的卡号信息 ( 中间不是空格是tab),要怎么把所有人卡号信息筛选出来且不能重复 (单个文件有好几千行!),卡号都是10位数,有部分不是10位的前面还要帮忙加上0,我用python怎么搞?

    把所有的这些txt文件放到一个文件夹

    打开cmd, 进入到这个放了多个txt的文件夹, 运行命令copy *.txt all.txt

    在该文件夹下创建一个python脚本 1.py, 将下列代码复制进去

# coding=utf-8
# using python27
file_path = 'all.txt'

with open(file_path, 'r') as f:
    card_informations = map(lambda x: x.strip().split('\t'), f.readlines())

for i in range(len(card_informations)):
    number = card_informations[i][0]
    if len(number)<10:
        card_informations[i][0] += '0'  # 给小于十位的加上0

# 剔除重复数据
result = []
for i in card_informatios:
    if i not in result:
        result.append(i)

# 写入新文件
with open('result.txt', 'w+') as f:
    for i in range(len(result)):
        f.write(result[i][0]+'\t'+result[i][1]+'\n)

4. 运行该脚本, 然后该文件夹下就会多出一个result.txt的文件, 里面放的就是去重完之后的所有卡信息.

追问

我把改成 for i in range(len(result)/2+1): 解决了! 谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-07-03
"""将文件内容读取到set中"""
def proc(fp,tset):
    for line in fp:
        for i in line.split():
            tset.add(i)
    return tset



if __name__=="__main__":
    
    """读入文件列表"""
    flists=["c:/t1.txt","c:/t2.txt"]
    nums=set()
    for fn in flists:
        fp=open(fn,"r")
        nums=proc(fp,nums)
        fp.close()
    
    """输出文件列表"""
    fp=open("c:/t3.txt","w")
    for num in nums:
        fp.write("{:0>10}\t".format(num))
    fp.close()

追问

flists=[r'C:\Users\CC\Desktop\card\all.txt'] 我路径前面+r的  就成这样了

追答

这样的输出符合程序的原始预期。不知有什么疑问?

追问

大哥 你看我图片 名字前面那么多000 还没换行

第2个回答  2017-07-03

光要卡号的话简单。假设源文件名为1.txt,卡号输出到2.txt

with open('1.txt','r') as f:
    a=f.readlines()
b=[]
for i in a :
    if len(i.split('\t')[0])==10:
        b.append(i.split('\t')[0])
    else:
        b.append("0"+i.split('\t')[0])
c=set(b)
with open('1.txt','w') as f:
    f.writelines(c)

相似回答