を読みます問題は、for
ループがファイルの2行目の読み取りを開始することです。 ファイルを閉じたり開いたりせずに1行目から読み込みを開始するにはどうすればよいですか?は、私は、このような行の長さのプリントを持っている私のコードで
答えて
file.seek
を使用して次の読み取り位置を移動することはできますが、それは非効率的です。すでに行を読み込んでいるので、2度目に読み取ることなく line
を処理するだけで済みます。
with open(filename,'r') as f:
line = f.readline()
print("length = ", len(line))
if 'b' in line:
print("letter 'b' found.")
for line in f:
...
最初の行を特別に処理する必要があるようです。
lineno = 1
found = False
for line in file:
if 'b' in line:
found = True
if lineno == 1:
print("length of first line: %d" % len(line))
lineno += 1
if found:
print("letter 'b' found.")
これはあまりよく考えられていません。すべての反復で 'lineno'をテストしインクリメントするのではなく、' next'を使って最初の行を別々に扱うことができます。また、 'file'はPythonの組み込みであり、変数名としては使用しないでください。 –
@次の方法は、最初の行で「b」をスキップします。質問は非常に不明で、私の答えは推測でした:OPは最初の行を特別に扱い、長さを印刷し、同時にファイル全体に*文字bが含まれているかどうかをチェックする必要があります。 – ulidtko
それはあなたがこのような何かしたいように聞こえる:あなたが最初に処理する必要がある場合:
with open('file.txt', 'r') as f:
b = sum(1 for line in f for char in line if char == "b")
print "found %d b" % b
文字を検索するために文字列全体をループする必要はありません。 '' string 'の 'b'はそれを行います。 – ulidtko
@ulidtko:私はそれを検索しようとしていません、私は出現の数を数えようとしています。 '' b 'は '' bbbbbb''に対して 'True'を返します。' sum(char == "b"は行内のchar) 'は' 6'を返します。 –
私は最初のコードスニペットについて話していました。 'for character in line:if character ==" b ":..."は、if "b" in line:... 'に単純化することができます。 – ulidtko
#! usr/bin/env python
#Open the file , i assumed its called somefile.txt
file = open('somefile.txt.txt','r')
#Lets loop through the lines ...
for line in file.readlines():
#test if letter 'b' is in each line ...
if 'b' in line:
#print that we found a b in the line
print "letter b found"
- 1. 私は私のコードでこの行を持っている
- 2. は、なぜ私は/私はこのようなコードを持っているC
- 3. 私はこのようなコードを持っている
- 4. Rubyは私がこのようなコード持っている「行う」ループ
- 5. は、どのように私は、私はこのコードを持っているPHP
- 6. Valaのは、私は、このようなファイルを持って行
- 7. Grailsの私は、このようなコード持って
- 8. 私はこのようなコードを持ってヌル
- 9. Angular2「これは」私はこのようなコード持っている未定義
- 10. 私はそのようなコードを持っている
- 11. 最初の要求は、私は私の見解では、このようなコードを持っているレール3
- 12. パディングトップは、私は、このようなコードを持っているクロム
- 13. は、私はこのコードを持って
- 14. は、私はこのコードを持って
- 15. どのように私は次の行に私のPHPコードでこの問題を持っている
- 16. は、私はこのようなテーブルを持っているSQL
- 17. は、私はこのようなテーブルを持っているSQL
- 18. は、私はこのようなセットアップを持っているナビゲーション
- 19. Grailsは私はこのようなリストを持っている
- 20. は、私はこのようなモデルを持っている
- 21. は、私はこのようなモデルクラスを持っている
- 22. は私はこのようなリストを持っている1つの行data.frame
- 23. 私はこのようなOBJECTIDを持っているのObjectID
- 24. 私はこのようなデータセットを持っている別の
- 25. キャッチは、私は、このようなコードを持っている私のアプリケーションでは、ヌル
- 26. どのように私はこのコードを持って
- 27. 私は、この内部のようなコードを持っている宝石を持っているクラスルビー
- 28. は、私はこのようなコントローラーを持っている私のスポックテスト
- 29. 私は現在、このようなコード持っているのPython
- 30. PHP - 私はこのようなコード持っている複数の結果
@Dieseltjuh:
するか、あなただけの数が必要な場合'readline'を使って最初の行を特別に処理し、残りのファイルをループします。すべての行を同じ方法で処理したい場合は、 'readline'を使わないでください。これが明確になることを願っています。 – unutbu
'readline'ではなく、' line = next(f) '(または' f.next() 'をPythonのバージョンに応じて行うことができます)。 –