[英]Python: Looking for the same word in a file?
我正在嘗試用Python創建一個程序來檢查文本文件中是否有重復的單詞。 (反過來,如果有或沒有,則返回一個布爾值)
例如,我有一個名為“copy”的文本文件。 在該文本文件中是一行句子。 “那里沒有副本”(句子中有兩個)
在另一個文件“nocopy”中,它將是一行,“沒有副本”。 (那里只有一個)
到目前為止,我已經構建了我的Python程序:
def duplicate(fname):
'(file.txt) ==> (Boolean) Returns True if there are duplicate words'
infile = open(fname, 'r')
l = infile.read()
infile.close
#Missing code here
我無法弄清楚接下來該做什么。 我的想法是嵌套for循環,但我認為我不需要它。 非常感謝幫助。 謝謝!
如果你想查看文件中是否有任何重復的單詞,那么我會這樣做:
def duplicates(fname):
with open(fname) as f:
words = f.read().split()
return len(set(words)) != len(words)
這將檢查所有單詞的集合的數量(即,每個唯一單詞)是否等於有多少單詞。
我想你想要這個:
def duplicate(fname):
infile = open(fname, 'r')
for line in infile.readlines():
for a in line.split(' '):
line=line.replace(a,"",1)
if a in line:
return True
如果你想嘗試一下:
def duplicate(fname):
infile = open(fname, 'r')
for line in infile.readlines():
for a in line.split(' '):
line=line.replace(a,"",1)
if a in line:
return True
if(duplicate('fname.txt')):
print "yes"
如果duplicate返回true,則會打印yes。
我假設您正在尋找彼此相鄰的重復單詞。 例如,你不想消除“那里有漂亮的房子”中的“那里”。 非常簡單的選擇是將行拆分為列表,然后比較連續元素,刪除副本。 然后,這將是迭代列表並相應地用空格打印每個值的問題。 如果您只對大小感興趣,可以隨時將單詞列表轉換為一組單詞,然后檢查它們的大小是否仍然相同。
def duplicate(fname):
'(file.txt) ==> (Boolean) Returns True if there are duplicate words'
infile = open(fname, 'r')
fLines = []
for line in infile:
l = line.split(' ')
fLines += [i.lower().rstrip('\n') for i in l]
infile.close()
nLines = list(set(fLines))
for l in nLines:
if fLines.count(l) > 1: return True
return False
我建議使用一個集合,因為它刪除了重復項,因此它限制了所需的迭代量。 請注意,這不會考慮標點符號(只需使用s.strip(punctuation)
來擺脫它)。 但是,重復項被定義為相同的單詞,而不區分大小寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.