python文件去重
❶ python如何去除重復行並寫入另一個文件
問題描述的並不準確
要看重復行是連續的還是非連續的
如果是連續的, 可以考慮緩存一行, 然後把後面的行與緩存的行比較, 如果不是,那就得緩存所有不同的行, 每次讀一行就要與所有緩存過的行做比較了,偽代碼如下:
#coding=utf-8
fin=open("input.txt","r")
fout=open("output.txt","a+")
bufferedline=""
while(finand(line=fin.readline())!=bufferedline):
fout.write(line)
fin.close()
fout.close()
如果緩存行不連續的話,偽代碼如下:
#coding=utf-8
fin=open("input.txt",'r')
fout=open('output.txt','a+')
bufferedlines=[]
while(finand(line=fin.readline())):
i=0;
for(i=0;i<len(bufferedlines);++i):
if(line==bufferedlines[i]):
break;
ifi==len(bufferedlines):
bufferedlines.append(line)
fout.write(line)
❷ Python如何對列表進行去重
1.使用set的特型,python的set和其他語言類似,是一個無序不重復元素集
orgList=[1,0,3,7,7,5]
#list()方法是把字元串str或元組轉成數組
formatList=list(set(orgList))
print(formatList)
結果:
[0,1,3,5,7]
2.使用keys()方法
orgList=[1,0,3,7,7,5]
#list()方法是把字元串str或元組轉成數組
formatList=list({}.fromkeys(orgList).keys())
print(formatList)
結果:
[0,1,3,5,7]
上面兩種方法的問題是:結果是沒有保持原來的順序。
3.循環遍歷法
orgList=[1,0,3,7,7,5]
formatList=[]
foridinorgList:
ifidnotinformatList:
formatList.append(id)
print(formatList)
結果:
[1,0,3,7,5]
這樣的代碼不夠簡潔
4.按照索引再次排序
orgList=[1,0,3,7,7,5]
formatList=list(set(orgList))
formatList.sort(key=orgList.index)
print(formatList)
結果:
[1,0,3,7,5]
❸ python-列表-元素去重
>>>re.sub("(.)\1+","\1","avvvcctaa")
'avcta'
❹ python,list如何去重
通過set來去重
>>>l=[1,2,3,4,5,2,1,3,45,3,21,12,4]
>>>set(l)
set([1,2,3,4,5,12,45,21])
>>>printlist(set(l))
[1,2,3,4,5,12,45,21]
>>>
❺ python如何去除重復行並寫入另一個文件
lines_seen=set()
outfile=open("2.txt","w")
forlineinopen("1.txt","r"):
iflinenotinlines_seen:
outfile.write(line)
lines_seen.add(line)
outfile.close()
代碼
❻ python中列表如何去重
可以利用set去重
代碼如下:
#coding=utf-8
li=[1,2,3,4,2,1,3,0]#列表
li2=set(li)
print(li2)
❼ python中實現兩個txt文檔的去重功能(即去掉第一個文檔中和第二文檔相同的行)
# -*- coding: utf-8 -*-
#
# python 2.7
fp1 = file('', 'r')
fp2 = file('', 'r')
fp3 = file('', 'w')
d1 = {}
d2 = {}
isFirst = True
for line in fp1:
if not isFirst:
d1[hash(line)] = line
else:
isFirst = False
fp1.close()
isFirst = True
for line in fp2:
if not isFirst:
d2[hash(line)] = line
else:
isFirst = False
fp2.close()
diff = set(d1.keys()) - set(d2.keys())
for key in diff:
fp3.write(d1[key])
fp3.close()
❽ Python文件中如何除去重復行 前一行與後一行進行對比的形式
除開讀寫文件,去重:
去重後的list=list(set(原list))
❾ python 將文件內容去重,然後寫出到txt
可以字典套字典來用
book={
'a':{'A':1},
'b':{'B':0},
'c':{'C':1},
'd':{'D':0}
}
bookname='d'
bookauthor='D'
bookpay=1
printbook
#先判是否有這本書
ifbooknameinbook:
#判斷是否是該作者的
ifbookauthorinbook[bookname]:
#再判斷是否付費1付費,0未付費
ifbook[bookname][bookauthor]==0:
ifbookpay==1:
book[bookname][bookauthor]=1
else:#不是該作者
book[bookname][bookauthor]=bookpay
else:#沒有這本書
book[bookname][bookauthor]=bookpay
printbook
#總體來說就是這么個意思,可以參考修改自己的代碼
#自己動手豐衣足食~