在python中重新组织和排序读取文件中的行

时间:2017-10-31 00:14:56

标签: python python-3.x sorting

我仍然是python的新手,目前我遇到了问题。 我正在尝试读取一个简单的.txt文件,并按照与每行中的数字相关的新顺序打印这些行。 (从最低到最高)

.txt目前是:

House 7
Office 2
Skyscraper 5
Shack 9
Condo 8

我需要的印刷品如下:

2 Office
5 Skyscraper
7 House
8 Condo
9 Shack 

到目前为止我的代码是:

inFile = open("dogs.txt", "r")

for line in inFile:
   strLine = line.split()
   strLine = (strLine[1] + " " + strLine[0])

   print(strLine)

我已经能够得到左侧的数字,但现在排队的问题。我试图以多种方式实现“.sort()”和“排序”,但我认为我对它们的理解不足以使它们正常工作。我已经看过,也许我应该使用“append()”,但同样,我对该方法不够熟悉,无法使用正确的语法。

2 个答案:

答案 0 :(得分:1)

分割后按列表中的第二项排序。

with open("dogs.txt", "r") as in_file:
    lines = [line.split() for line in in_file]

sorted_lines = sorted(lines, key=lambda x: int(x[1].strip()))

for line in sorted_lines:
    print(" ".join(reversed(line)))

答案 1 :(得分:0)

您需要使用内部列表中的第二项

对它们进行排序
inFile = open("dogs.txt", "r")
lines = []
for line in inFile:
   strLine = line.strip().split(' ')
   strLine = (strLine[1] + " " + strLine[0])
   lines.append(strLine)
a = '\n'.join(sorted(lines,key= lambda lines:lines[0]))
print(a)

输出:

2 Office
5 Skyscraper
7 House
8 Condo
9 Shack

还记得去掉空格,因为你正在读一个文件,在每一行的末尾你会有一个\n字符