2016-01-22 73 views
-1

我需要一些帮助,我目前正在做一个在线python课程,我似乎可以得到想要的结果来完成作业。Python(2.7 ....)列表问题

基本上,有我需要通过调用一个文本文档“的raw_input”然后我用“的open()”函数,然后我有一个空的“名单()”

现在我跑了“对于我的.txt文档中的每一行循环,我需要“r.strip()”所有的空格,这留下了一个4个live .txt文档(.txt文件将位于ask的底部)现在我必须“将这些行分割成单词。现在从我需要遍历这些单词和“.append()”每个单词不是已经在列表中,然后“.sort()”,然后打印......希望在该阶段,它看起来像所需的输出。

只是为了让我感觉好一点,这是我第一次做任何形式的编码。所以如果你能解释哪里出错,为什么会出错。 到目前为止的代码 - 目前产生一个错误

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     if words not in lst: 
print lst 

.TXT文档

But soft what light through yonder window breaks 
It is the east and Juliet is the sun 
Arise fair sun and kill the envious moon 
Who is already sick and pale with grief 

P.S - 即使世界在改变中的.txt一条线,因为它的代码不会在平地机的工作毫无意义。我试过了(得到想要的输出,错误的代码)

请帮助你,我们将不胜感激。

如果有任何需要的信息,请尝试提供。

+2

“目前产生一个错误”。究竟是什么?你能追溯到你的问题吗? – Evert

+0

“”.append()“不在列表中的每个单词”。 Python的['set'](https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset)可能会更方便。 – Evert

+0

你的'if'语句没有代码块。另外,你没有用'lst'做任何事 - 它只是一个空列表而且永远不会改变。 –

回答

0

这将读取文件,添加单词列表,排序列表,然后打印它。

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     if words not in lst: 
      lst.append(words) 
lst.sort() 
print lst 
fh.close() 

lst.append(element)将添加element到列表lst

lst.sort()将按字母顺序排列列表lst

签出该文档=>Lists

+0

So换句话说,我得到了回溯,因为我实际上没有对列表本身做任何事情? –

0
l = list() 
with open('inp.txt') as inp: 
     for each_line in inp: 
       a = each_line.strip() 
       l += a.split() 

print set(l) 

与关键字,因为它是一个更好的做法,因为这会operation.and后关闭您的文件的唯一部分使用set(使用)只接受独特的元素

0

您也可以使用set这就像一个列表,但没有重复。这意味着你不必自己检查重复项,因为set会自动为你自动完成。

如:

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = set() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     lst.add(words) 
lst = list(lst) 
lst.sort() 
print lst 
0

尝试列表解析生成列表,使用设置为删除重复项

lst = [words for line in open(fname) for words in line.rstrip().split()] 
lst = list(set(lst)) 
lst.sort() 
print lst