按照保存顺序排序单词

时间:2016-04-09 01:00:18

标签: python-3.x

如何按照保存在文本文件中的顺序对单词进行排序,只需从下面添加新行,并在删除相同的单词后保存相同的顺序。如果我逐个添加单词

word A 
word B 
word C 
word D 
word E 

我的结果看起来像这样

1. word B
2. word E
3. word C
4. word D
5. word A

第一个是最后一个,第二个是第一个等等

所以没有订单......

我在这里只有排序只保留唯一的单词,

就此:

print ('Write word : ')

text = input ('')

data = open ('D:\path\file.txt', 'a')         #Add new word to new line
data.write (text)
data.write('\n')

with open('D:\path\file.txt', 'r') as lines:
    lines_set = []
    for line in lines:
        if line.strip() not in lines_set:  # Keep only unique words
            lines_set.append(line.strip())


data.close()

2 个答案:

答案 0 :(得分:0)

lines_set = {line.strip() for line in lines}

这是为您创建一个集合对象,而集合没有任何顺序。 我使用列表执行此任务以保留添加的顺序:

with open('D:\path\file.txt', 'r') as lines:   
    lines_set = []
    for line in lines:
        if line.strip() not in lines_set:  # Keep only unique words
            lines_set.append(line.strip())

需要像这样通过很长的方式迭代行,这样才能保留唯一的单词。

答案 1 :(得分:0)

首先,如果问题发生变化,最好更新一下。大多数人都没有阅读答案中的所有评论来找到你的问题。

现在问你的问题:

逐行分析代码通常是一个好主意。

import random                               # In this code snippet it is not used?

print ('Write word : ')                     # printing something

text = input ('')                           # get some input -> text

data = open ('D:\path\file.txt', 'a')       #open new file (appending)
data.write (text)                           # write user input at file ending
data.write('\n')                            # write line break at file ending

等待!如果它不存在,你只想附加一行......

因此,让我们包含一个测试

print ('Write word : ')

text = input('')
data = open ('file.txt', 'a')         #Add new word to new line

with open('file.txt', 'r') as lines:
    if text.strip() not in map(str.strip, lines):  # Keep only unique words
        data.write(text)
        data.write('\n')

data.close()

这将检查该行是否已存在。也许map函数有点令人困惑,但它只将函数条应用于文件中的所有行,以消除额外的空格和换行符。

现在它应该工作:)