我有两个文件:
我想创建第三个文件"hits.txt“,其中包含”a.log.13“中的所有行,其中包含文件"spiders.txt”中的任何单词。
这是我的小弗兰克恩斯坦:
file_working = file("hits.txt", "wt")
file_1_logs = open("access.log.13", "r")
file_2_bots = open("bots.txt", "r")
file_3_hits = open("hits.txt", "a")
list_1 = arxiu_1_logs.readlines()
list_2 = arxiu_2_bots.readlines()
file_3_hits.write("Lines with bots: \n \n")
for i in list_2:
for j in list_1:
if i in j:
file_3_hits.write(j)
arxiu_1_logs.close()
arxiu_2_bots.close()它不像我所希望的那样工作,因为只有当bots.txt中的行与as .log.13中的任何一行完全相同时,我才会被击中。Thx
发布于 2013-05-13 12:25:51
你可以用一种更平淡的方式来做:
with open('spiders.txt') as fh:
words = set(re.split(r'[ \n\r]+', fh.read())) # set of searched words
with open('access.log.13') as file_in, \
open('hits.txt', 'w') as file_out:
for line in file_in:
if any(word in line for word in words): # look for any of the words
file_out.write(line)或者你可以使用更好的理解:
with open(...) as file_in, open (...) as file_out: # same as previously
good_lines = (line for line in file_in if any(word in line for word in words))
for good_line in good_lines:
file_out.write(good_line)发布于 2013-05-13 12:18:14
将if替换为:
if j.find(i) != -1https://stackoverflow.com/questions/16521801
复制相似问题