python如何合并多个txt文件删除所有重复行并生成新文件
文件夹内有许多个这样的txt文件全都是类似的卡号信息(中间不是空格是tab),要怎么把所有人卡号信息筛选出来且不能重复(单个文件有好几千行!),卡号都是10位数,有部分不...
文件夹内有许多个这样的txt文件全都是类似的卡号信息 ( 中间不是空格是tab),要怎么把所有人卡号信息筛选出来且不能重复 (单个文件有好几千行!),卡号都是10位数,有部分不是10位的前面还要帮忙加上0,我用python怎么搞?
展开
3个回答
2017-07-03
展开全部
把所有的这些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): 解决了! 谢谢
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()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
光要卡号的话简单。假设源文件名为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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询