如何在python中对文件中的文本进行排序?

如何在python中对文件中的文本进行排序?,python,Python,我有一个.txt文件,如下所示: ancient 0.4882 detained 5.5512 neighboring 2.9644 scores 0.5951 eggs 0.918 excesses 3.0974 proceedings 0.7446 menem 1.7971 我想通过比较前三个单词在一个列表中的值和另一个列表中的剩余单词来显示前三个单词 i、 例如,本例的输出应为: [拘留、放纵、相邻]&[menem、鸡蛋、诉讼、分数、古代] 怎么做 编辑: 我忘了提一件事:我想只考虑那些

我有一个.txt文件,如下所示:

ancient 0.4882
detained 5.5512
neighboring 2.9644
scores 0.5951
eggs 0.918
excesses 3.0974
proceedings 0.7446
menem 1.7971
我想通过比较前三个单词在一个列表中的值和另一个列表中的剩余单词来显示前三个单词

i、 例如,本例的输出应为:

[拘留、放纵、相邻]
&
[menem、鸡蛋、诉讼、分数、古代]

怎么做

编辑:


我忘了提一件事:我想只考虑那些价值大于0.5的词怎么做?p> 使用csv的答案比我的更简洁,但这里有另一种方法

import csv    
with open('inputFile.csv','r') as inputFile:
    reader = csv.reader(inputFile, delimiter = " ")    
    word = dict()    
    for line in reader:
        if float(line[1]) > 0.5:
            word[line[0]] = float(line[1])

    sortedArray = sorted(word.iteritems(), key=lambda x:-x[1])
    maxWords = sortedArray[:3]
    Remaining = sortedArray[3:]    
    print maxWords
    print Remaining
from operator import itemgetter

with open('file_list_data.txt', 'r') as f:
    lines = f.readlines()

records = [l.split() for l in lines]
records_with_numbers = [(r[0], float(r[1])) for r in records if float(r[1]) > 0.5]

sorted_records = sorted(records_with_numbers, key=itemgetter(1), reverse=True)

top_3 = [word for (word, score) in sorted_records[0:3]]
rest = [word for (word, score) in sorted_records[3:]]

使用csv的答案比我的更简洁,但这里有另一种方法

from operator import itemgetter

with open('file_list_data.txt', 'r') as f:
    lines = f.readlines()

records = [l.split() for l in lines]
records_with_numbers = [(r[0], float(r[1])) for r in records if float(r[1]) > 0.5]

sorted_records = sorted(records_with_numbers, key=itemgetter(1), reverse=True)

top_3 = [word for (word, score) in sorted_records[0:3]]
rest = [word for (word, score) in sorted_records[3:]]

使用csv的答案比我的更简洁,但这里有另一种方法

from operator import itemgetter

with open('file_list_data.txt', 'r') as f:
    lines = f.readlines()

records = [l.split() for l in lines]
records_with_numbers = [(r[0], float(r[1])) for r in records if float(r[1]) > 0.5]

sorted_records = sorted(records_with_numbers, key=itemgetter(1), reverse=True)

top_3 = [word for (word, score) in sorted_records[0:3]]
rest = [word for (word, score) in sorted_records[3:]]

使用csv的答案比我的更简洁,但这里有另一种方法

from operator import itemgetter

with open('file_list_data.txt', 'r') as f:
    lines = f.readlines()

records = [l.split() for l in lines]
records_with_numbers = [(r[0], float(r[1])) for r in records if float(r[1]) > 0.5]

sorted_records = sorted(records_with_numbers, key=itemgetter(1), reverse=True)

top_3 = [word for (word, score) in sorted_records[0:3]]
rest = [word for (word, score) in sorted_records[3:]]



你被困在哪里?你知道如何打开和读取文件吗?@monkut Ya,我在做类似的事情,让一个列表包含所有单词,第二个列表包含所有浮点值,然后对第二个列表进行排序。。但是我迷路了!你被困在哪里?你知道如何打开和读取文件吗?@monkut Ya,我在做类似的事情,让一个列表包含所有单词,第二个列表包含所有浮点值,然后对第二个列表进行排序。。但是我迷路了!你被困在哪里?你知道如何打开和读取文件吗?@monkut Ya,我在做类似的事情,让一个列表包含所有单词,第二个列表包含所有浮点值,然后对第二个列表进行排序。。但是我迷路了!你被困在哪里?你知道如何打开和读取文件吗?@monkut Ya,我在做类似的事情,让一个列表包含所有单词,第二个列表包含所有浮点值,然后对第二个列表进行排序。。但是我迷路了!如果你也能解释一下,那就太好了。我有一个.txt文件,顺便说一句,不是.csv文件。你可能只想做一次排序。比如
sorted\u words=sorted(word.iteritems(),key=lambda x:-x[1])
然后
max\u words=sorted\u words[:3]
剩余=sorted\u words[3:]你可以再告诉我一件事:我想只考虑那些价值大于0.5的单词怎么做呢?我会在把它们放在字典之前把它们删掉。我更新了答案以反映上述评论。另外,请注意,您可以使用txt文件而不是inputFile.csv。如果您也能解释一下,那就太好了。我有一个.txt文件,顺便说一句,不是.csv文件。你可能只想做一次排序。比如
sorted\u words=sorted(word.iteritems(),key=lambda x:-x[1])
然后
max\u words=sorted\u words[:3]
剩余=sorted\u words[3:]你可以再告诉我一件事:我想只考虑那些价值大于0.5的单词怎么做呢?我会在把它们放在字典之前把它们删掉。我更新了答案以反映上述评论。另外,请注意,您可以使用txt文件而不是inputFile.csv。如果您也能解释一下,那就太好了。我有一个.txt文件,顺便说一句,不是.csv文件。你可能只想做一次排序。比如
sorted\u words=sorted(word.iteritems(),key=lambda x:-x[1])
然后
max\u words=sorted\u words[:3]
剩余=sorted\u words[3:]你可以再告诉我一件事:我想只考虑那些价值大于0.5的单词怎么做呢?我会在把它们放在字典之前把它们删掉。我更新了答案以反映上述评论。另外,请注意,您可以使用txt文件而不是inputFile.csv。如果您也能解释一下,那就太好了。我有一个.txt文件,顺便说一句,不是.csv文件。你可能只想做一次排序。比如
sorted\u words=sorted(word.iteritems(),key=lambda x:-x[1])
然后
max\u words=sorted\u words[:3]
剩余=sorted\u words[3:]你可以再告诉我一件事:我想只考虑那些价值大于0.5的单词怎么做呢?我会在把它们放在字典之前把它们删掉。我更新了答案以反映上述评论。另外,请注意,您可以使用txt文件而不是inputFile.csv。我还有一件事忘了问。你能帮我吗?我想只考虑那些价值大于0.5的词怎么做?我还有一件事我忘了问。你能帮我吗?我想只考虑那些价值大于0.5的词怎么做?我还有一件事我忘了问。你能帮我吗?我想只考虑那些价值大于0.5的词怎么做?我还有一件事我忘了问。你能帮我吗?我想只考虑那些有价值大于0.5的词怎么做?我只想考虑那些有价值大于0.5的词怎么做?添加一个过滤器,只在有数字的情况下产生可变的记录。有一个大于0.5的值该怎么做?添加一个过滤器,只在生成带有变量数的变量记录时,只保留大于0.5的单词。我只考虑那些大于0.5的词,怎么做?添加一个过滤器,只在产生变量时保持值大于0.5的单词。我想只考虑那些值大于0.5的单词怎么做?添加一个过滤器,只在用数字生成变量记录时,只保留大于0.5的单词。