从列表中删除重复的字符串?

时间:2016-03-23 03:56:03

标签: python python-2.x

我编写了一个程序,从“从:”开始从文本文件中提取所有电子邮件地址。我创建了一个列表,将所有提取的电子邮件地址存储到列表中,并创建另一个列表,通过删除重复的电子邮件地址来存储唯一的电子邮件地址。现在我得到输出但同时我得到的输出显示'set'在打印新列表之前,即在“print Unique_list”之后

注意 - 未附加原始文本文件,因为我不知道该怎么做。

谢谢

  print "Please enter the file path:\n"
  text_file = raw_input ("Enter the file name:")
  print "Opening File\n"
  #Using try and except to print error message if file not found
  try:
    open_file = open ( text_file )
    print "Text file " + text_file + " is opened \n"
 except:
 #Printing error message 
     print "File not found"
 #Using "raise SystemExit" for program termination if file not found
    raise SystemExit
 #Creating dynamic list to store the no. Email addresses starting from       'From:'
 Email_list = [];
 #Using loop to extract the Email addresses starting from 'From:'
 for line in open_file:
   if 'From:' in line:
 #Adding each extracted Email addresses at the end of the list
    Email_list.append(line)
 print "Printing extracted Email addresses\n"       
 print  Email_list,"\n"
 print "Before removing duplicate Email addresses, the total no. of Email      addresses starting with 'From:'",len(Email_list),"\n"
 #Removing duplicate Email addresses 
 Unique_list = set(Email_list)
 #print Email_list.count()
 print "Printing Unique Email addresses\n"
 print (Unique_list)
 print "After removing duplicate Email addresses, the total no. of Email   [enter image description here][1]address starting with From:, ",len(Unique_list),"\n" )`

2 个答案:

答案 0 :(得分:1)

  

获取在打印新列表之前显示'set'的输出,即在“print Unique_list”

之后

只需将其转换回stacktrace

list

答案 1 :(得分:1)

答案可能取决于目标。基于这个问题,目前尚不清楚该目标是否仅以特定方式打印地址;或根据一些可读性假设打印它们。如果目标是以给定的方式打印,则可以通过控制输出来获得良好的服务;而不是依赖于您要打印的对象的内置String表示。

一个例子: 而不是print Email_list,"\n" 使用print print (','.join (Email_list, '\n'))

如果您想模拟列表的表示,可以使用print ('[\'{list}\']'.format (list = '\', \''.join (Email_list)), '\n')之类的内容 或者更具凝聚力的东西。 在任何情况下,您都可以控制打印方式。

如果依靠内部确定的对象表示进行打印,可能会根据输出问题进行编码考虑;这不是支持一个人为纯程序逻辑做出最佳编码选择的能力的选择。

或者,我是否误解了你的问题?