2016-07-07 49 views
1

我正在尝试使用python进行简单的网页报废,它检查网站的名称,将它们全部放入带链接的字典中,然后将名称与列表进行比较,我准备好了保存。我遇到的问题是尝试使用不在保存列表中的网站名称创建新词典。试图将字典与文本文件进行比较

together = dict(zip(names, links)) 
final_dict = {} 


for k, v in together.items(): 
    with open('file.txt', 'r') as f: 
     file_lines = f.readlines() 
     if k in file_lines: 
      print('All ready have that name.') 
      pass 
     else: 
      print(k, v) 
      final_dict.update({k, v}) 
    f.close() 

保存的文件只能有together字典的k值。

+1

您的缩进是否在'file_lines中的k'被破坏? –

+0

只在问题中,而不在脚本上。 – warbirdn

回答

2

尝试改变

file_lines = f.readlines() 

file_lines = f.read().splitlines() 

前者保持换行符\n在该行的末尾。

另外final_dict.update({k, v})应该可能是final_dict.update({k: v}),正如其他人已经指出的那样,您的缩进可能存在问题。

+0

我采纳了你的提示,并提出了:'file_lines = [line.rstrip('\ n')for line in f]'并修正了'({k:v})',谢谢! – warbirdn

2

你的算法效率不高。对于每个项目together,它读取整个文件。如果在处理文件时处理文件中的每一行,则速度会更快:

together = dict(zip(names, links)) 

with open('file.txt', 'r') as f: 
    for line in f: 
     if line in together: 
      del together[line] 
相关问题