0
此代碼每次在正在搜索的文件中輸出一次匹配的字符串(所以我如果字符串重複出現,最終會得到一個巨大的列表)。我只想知道我的列表中的字符串是否匹配,而不是匹配多少次。我確實想知道哪些字符串匹配,所以True/False解決方案不起作用。但我只希望他們每次都列出一次,如果他們匹配的話。我不太瞭解pattern ='|'.join(關鍵字)部分在做什麼 - 我從別人的代碼中獲得了該文件以使文件匹配工作,但不知道是否需要它。您的幫助將不勝感激。Python:如果找到一個字符串,停止搜索該字符串,搜索下一個字符串,並輸出匹配的字符串
# declares the files used
filenames = ['//Katie/Users/kitka/Documents/appreport.txt', '//Dallin/Users/dallin/Documents/appreport.txt' ,
'//Aidan/Users/aidan/Documents/appreport.txt']
# parses each file
for filename in filenames:
# imports the necessary libraries
import os, time, re, smtplib
from stat import * # ST_SIZE etc
# finds the time the file was last modified and error checks
try:
st = os.stat(filename)
except IOError:
print("failed to get information about", filename)
else:
# creates a list of words to search for
keywords = ['LoL', 'javaw']
pattern = '|'.join(keywords)
# searches the file for the strings in the list, sorts them and returns results
results = []
with open(filename, 'r') as f:
for line in f:
matches = re.findall(pattern, line)
if matches:
results.append((line, len(matches)))
results = sorted(results)
# appends results to the archive file
with open("GameReport.txt", "a") as f:
for line in results:
f.write(filename + '\n')
f.write(time.asctime(time.localtime(st[ST_MTIME])) + '\n')
f.write(str(line)+ '\n')
我確實希望它能告訴我哪個文件的關鍵字被發現,所以謝謝。這肯定比我的原始代碼更有效,並且它似乎工作。我會做更多的測試。謝謝! – Stefany