2017-10-31 17 views
0

私はまだPythonには新しく、現在問題に固執しています。 私は単純な.txtファイルを読み込み、各行の番号を関連付ける新しい順序で行を印刷しようとしています。Pythonの読み込みファイルからの行の再編成と並べ替え

House 7 
Office 2 
Skyscraper 5 
Shack 9 
Condo 8 

私は私のプリントが見えるように必要なもの:これまで

2 Office 
5 Skyscraper 
7 House 
8 Condo 
9 Shack 

私のコードの.txtが現在ある

(最高から最低)は:

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

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

    print(strLine) 

私は左側の数値を取得することができましたが、今すぐ行を並べ替えることに問題があります。私は ".sort()"と "sorted"を複数の方法で実装しようとしましたが、適切に動作させるために十分理解しているとは思いません。私は "append()"を使うべきではないかと思ったが、正しい構文を使えるようにするためにはあまりよく知られていない。

+0

"Python sort tutorial"をオンラインで検索してください。多くの例があります。また、あなたが投稿していないコードを修正することはできません。あなたが与えた例ではソートしようとしません。 – Prune

+0

アイデアは、最初にファイル全体を1行ずつリストに読み込んだ後、そのリストをソートして、最終的にそれをあなたが望むフォーマットで印刷することです – jadsq

答えて

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文字があります

1

分割後にリスト内の2番目の項目を並べ替えます。あなたは内側のリストで2番目のアイテムを使用することによって、それらをソートする必要

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))) 
関連する問題