2012-03-13 9 views
1

別の質問。行を数えて番号を付けよう

このプログラムは、ハッシュタグがないか、またはその行が空でない限り、コード内のすべての行をカウントして番号を付けます。私は、ハッシュタグ以外のすべての行に番号を付けるようにしました。空行を数えないようにするにはどうすればいいですか?

def main(): 

    file_Name = input('Enter file you would like to open: ') 

    infile = open(file_Name, 'r') 

    contents = infile.readlines() 
    line_Number = 0 
    for line in contents: 
     if '#' in line: 
      print(line) 
      if line == '' or line == '\n': 
       print(line) 
     else: 
      line_Number += 1 
      print(line_Number, line) 

    infile.close() 

main() 

答えて

3

if句の中に'#' in lineの句があるかどうかを確認します。Trueになる可能性はありません。実際

if '#' in line or not line or line == '\n': 
    print line 

しかし、なぜあなたは空の印刷必要があります:基本的に は、あなたが同じアクションを実行するので、あなたは2例を組み合わせることができ、if line == '' or line == '\n':ラインは左:)また

にシフト必要かわいそうか'\n'

編集: line == '\t'などの他のケースも同じ方法で処理する必要がある場合は、Timのアドバイスを使用して、if '#' in line or not line.strip()を実行するのが最適です。

+2

'line == '\ n"なら 'not line'は' True'になりません。おそらく '# 'を行内に置いてもよいし、line.strip()'を使用しない方が良いでしょう。空白だけの行も空として数えます。 –

+0

ありがとう@TimPietzcker。これは '' \ t ''と多分もっと多くのシンボルをカバーします。おそらく、それは望ましい動作になります。私は最後にメモを追加しました。 –

0

あなたのforループの先頭に以下を追加することで、空行をスキップすることができます:Pythonで

if not line: 
    continue 

、空の文字列がブール値Trueに評価されます。その場合、空文字列がスキップされるのは、このif文が文字列が空のときだけTrueであるためです。

ステートメントは、コードがループの次のパスで継続することを意味します。そのステートメントの後のコードは実行されません。これは、行を数えるコードがスキップされることを意味します。

関連する問題