【发布时间】:2015-06-01 11:29:59
【问题描述】:
我有以下几乎适用于我的 python 代码(我非常接近!)。我有正在打开的莎士比亚戏剧的文本文件: 原文文件:
“但是从窗外透进来的光线很柔和
这是东方,朱丽叶是太阳
升起美丽的太阳,杀死嫉妒的月亮
谁已经病入膏肓了”
我写的代码的结果是这样的:
['Arise', 'But', 'It', 'Juliet', 'Who', 'already', 'and', 'and', 'and', '休息','东方','嫉妒','公平','悲伤','是','是','是','杀', '光','月亮','苍白','生病','柔软','太阳','太阳','the','the','the', '通过', '什么', '窗口', 'with', '那边']
所以这几乎就是我想要的:它已经在一个按我想要的方式排序的列表中,但是如何删除重复的单词?我正在尝试创建一个新的 ResultsList 并将单词附加到它,但它给了我上述结果而没有摆脱重复的单词。如果我“打印 ResultsList”,它只会输出大量单词。我现在拥有它的方式很接近,但我想摆脱额外的“and's”、“is's”、“sun's”和“the's”....我想保持简单并使用 append(),但是我不确定如何让它工作。我不想对代码做任何疯狂的事情。为了删除重复的单词,我从代码中遗漏了什么简单的东西?
fname = raw_input("Enter file name: ")
fhand = open(fname)
NewList = list() #create new list
ResultList = list() #create new results list I want to append words to
for line in fhand:
line.rstrip() #strip white space
words = line.split() #split lines of words and make list
NewList.extend(words) #make the list from 4 lists to 1 list
for word in line.split(): #for each word in line.split()
if words not in line.split(): #if a word isn't in line.split
NewList.sort() #sort it
ResultList.append(words) #append it, but this doesn't work.
print NewList
#print ResultList (doesn't work the way I want it to)
【问题讨论】:
-
可以用字典吗?
-
为什么不使用
OrderedSet(stackoverflow.com/questions/1653970/…)?
标签: python list duplicates