在Python中,有時(shí)候我們需要判斷兩個(gè)文件或數(shù)據(jù)是否存在重復(fù)的行。今天,我們將介紹如何使用Python來提取重復(fù)行。
with open("file.txt","r") as f:
lines = f.readlines()
lines_set = set(lines) # 將列表轉(zhuǎn)換成集合,去除重復(fù)項(xiàng)
for line in lines_set:
if lines.count(line) >1: # 判斷行在原列表中出現(xiàn)的次數(shù)
print(line)
以上是一個(gè)基本的例子。我們首先將文件中的所有行讀取出來,并將它們轉(zhuǎn)換成一個(gè)集合,這樣可以去除重復(fù)的行。之后,我們遍歷集合中的每一行,并使用count()函數(shù)來統(tǒng)計(jì)它在原文件中出現(xiàn)的次數(shù)。如果出現(xiàn)次數(shù)大于1,那么說明該行是重復(fù)的。
當(dāng)然,這種方法只適用于比較小的文件,因?yàn)樗枰淮涡宰x取文件中的所有行。如果文件很大,我們則需要采用一種更高效的方法。下面是另外一種方法:
with open("file.txt","r") as f:
lines_seen = set() # 用一個(gè)集合來保存已經(jīng)出現(xiàn)過的行
for line in f:
if line not in lines_seen:
lines_seen.add(line)
else:
print(line)
這種方法則是逐行讀取文件,只將出現(xiàn)過的行保存在集合中,這樣可以大大減少內(nèi)存使用。如果某行已經(jīng)在集合中出現(xiàn)過,那么說明該行是重復(fù)的。
最后,總結(jié)一下Python如何提取重復(fù)行的方法:
- 對于小文件,可以一次性讀取所有行,并將其轉(zhuǎn)換成集合,然后使用count()函數(shù)來判斷是否出現(xiàn)過重復(fù)行。
- 對于大文件,可以逐行讀取文件,并使用一個(gè)集合來保存已經(jīng)出現(xiàn)過的行,然后判斷是否出現(xiàn)過重復(fù)行。