0

要素の前に印刷された要素の行番号を使用して、リストの個々の要素を別々の行に印刷するにはどうすればよいですか? リスト情報もテキスト ファイルから取得されます。

これまでのところ、

import sys
with open(sys.argv[1], 'rt') as num:
    t = num.readlines()
    print("\n"[:-1].join(t))

現在、読み取り値は次のとおりです。

Blah, blah, blah
etc, etc, etc
x, x, x

しかし、私はこの読みが欲しい:

1. Blah, blah, blah
2. etc, etc, etc
3. x, x, x

助けてくれてありがとう。

4

3 に答える 3

2

enumerate()使用str.rstrip()して、すべてのタイプの末尾の空白を文字列から削除できます。また、改行がのみrstrip('\n')になることが確実な場合にも使用できます。\n

for i,x in enumerate(t,1):
    print ("{0}. {1}".format(i,x.rstrip()))
于 2012-11-15T18:36:17.563 に答える
0

これはenumerate、各行を印刷するのが最も簡単なようです。

import sys
with open(sys.argv[1], 'r') as num:
    for i,line in enumerate(num,1):
        print("%d. %s"%(i,line[:-1]))  #equivalent to `"{0}. {1}".format(i,line[:-1])`

もちろん、使用したい場合は、すべてをジェネレーターでラップできますjoin

def number_lines(fname):
    with open(fname,'r') as f:
       for i,line in enumerate(f,1):
           yield "%d. %s"%(i,line[:-1])

print('\n'.join(number_lines(sys.argv[1])))
于 2012-11-15T18:36:02.617 に答える
0

これを使用fileinput.inputすると、ファイルを 1 行ずつ反復処理できます。次fileinput.inputの行に戻ると、enumerate行番号を追跡します。入力にはすでに改行が含まれているため、メソッドで使用end=""するprintため、不要な改行は追加されません。format行番号とコンテンツをフォーマットされた表現に変換するために使用します。

import fileinput

for number, line in enumerate(fileinput.input(['some_file.txt']), 1):
    print('{0}. {1}'.format(number, line), end="")
于 2012-11-15T18:51:48.043 に答える