2017-11-17 3 views
-1

をPythonを使用して並べ替えて、の行ごとに次の番号を出力したいとします。Pythonを使用して数字を別々に(カンマ区切りに)印刷する方法は?

119、671、207、2484、6、941、2138、806、1851、2509、1264、701、2802、319、1603、98、347、525、1521、269、1681、1885、1731、 2828、2543、2011、720、2359、2248、22、1637

私のコードは、私がsplitを使用して数字を分割しようとしていたとき

>>> fo = open("cr.txt", "r") 
>>> fo1 = fo.readlines() 
>>> fo2 = fo1.split(',') 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'list' object has no attribute 'split' 

を好きに見える、それはlist object has no attribute splitとしてエラーを示しています。

+0

'split'は文字列で見つかった関数です。リストではありません。 – Shadow

+0

'readlines()'は文字列のリストを返します。それぞれの文字列は行で、stdoutに出力しようとします。 – alfasin

答えて

3

fo.readlines()は、行のリストを返します。テキストファイルに1行だけが含まれている場合は、これを使用して、ファイルの最初の行を選択します。あなたのファイルに複数の行が含まれている場合

fo = open("cr.txt", "r") 
fo1 = fo.readlines()[0] 
fo2 = fo1.split(',') 

その後、カンマですべての値を分割する前に、「」と一緒にすべての行を結合しており、これを使用しています。

fo = open("cr.txt", "r") 
fo1 = ','.join(fo.readlines()) 
fo2 = fo1.split(',') 
1

質問がカンマで区切られた行ごとに番号を印刷することで、ファッションソートされるように、次のコードは、一つの解決策である。

f = open("cr.txt", "r") 
l = f.read().split(sep = ",") 
list1 = sorted(l, key=lambda e: int(e)) 
for i in list1: 
    print(i) 

、出力は次のとおりです。

6 
22 
98 
119 
207 
269 
319 
347 
525 
671 
701 
720 
...... 

このコードでは、行番号をソートしてカンマなしで並べて表示しています。ここではlambdaという表現をソートの目的で使用しています。それ以外の場合はsort()の機能でも実現できます。

関連する問題