如何按照保存在文本文件中的顺序对单词进行排序,只需从下面添加新行,并在删除相同的单词后保存相同的顺序。如果我逐个添加单词
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()
答案 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函数有点令人困惑,但它只将函数条应用于文件中的所有行,以消除额外的空格和换行符。
现在它应该工作:)