Python append words to a list from file

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-08 11:42:19

问题


I'm writing a program to read text from a file into a list, split it into a list of words using the split function. And for each word, I need to check it if its already in the list, if not I need to add it to the list using the append function.

The desired output is:

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

My output is :

[['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']]

I have been trying to sort it and remove the double square brackets "[[ & ]]" in the begining and end but I'm not able to do so. And fo some reason the sort() function does not seem to work.

Please let me know where I am making a mistake.

word_list = []
word_list = [open('romeo.txt').read().split()]
for item in word_list:
    if item in word_list:
        continue
    else:
        word_list.append(item)
word_list.sort()
print word_list

回答1:


Use two separate variables. Also, str.split() returns a list so no need to put [] around it:

word_list = []
word_list2 = open('romeo.txt').read().split()
for item in word_list2:
    if item in word_list:
        continue
    else:
        word_list.append(item)
word_list.sort()
print word_list

At the moment you're checking if item in word_list:, which will always be true because item is from word_list. Make item iterate from another list.




回答2:


Remove brackets

word_list = open('romeo.txt').read().split()



回答3:


If order doesn't matter, it's a one liner

uniq_words = set(open('romeo.txt').read().split())

If order matters, then

uniq_words = []
for word in open('romeo.txt').read().split():
    if word not in uniq_words:
       uniq_words.append(word) 

If you want to sort, then take the first approach and use sorted().




回答4:


The statement open('remeo.txt).read().split() returns a list already so remove the [ ] from the [open('remeo.txt).read().split() ]

if i say

word = "Hello\nPeter"
s_word = [word.split()] # print [['Hello', wPeter']]
But
s_word = word.split() # print ['Hello', wPeter']



回答5:


Split returns an list, so no need to put square brackets around the open...split. To remove duplicates use a set:

word_list = sorted(set(open('romeo.txt').read().split()))
print word_list


来源:https://stackoverflow.com/questions/36673938/python-append-words-to-a-list-from-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!