2017-08-19 10 views
1

私はこのテキストファイルを持っているPythonコードでtxtファイルのすべての 'x'を見つける方法は?</p> <blockquote> <p>ハロー世界</p> <p>世界のHello World</p> </blockquote> <p>これは私のコードです:

f = open("dummy.txt","r+") 
x = 0 
for line in f: 
    if "world" in line: 
     x = x + 1 
print x 
f.close() 

それは2ない3印刷します。

+2

"world"が含まれている行が2行しかないため、2が表示され、3ではありません。 –

+1

テキストファイルに対しては読み書きモードを使用しないでください。 –

+0

@ Jean-FrançoisFabre私は質問 –

答えて

2
if "world" in line: 
    x = x + 1 

少なくとも1つの存在が行にある場合に1を加算します。しかし、1つの行に2つのオカレンスがあるので、カウントは失敗します。

ちょうど行います

x += line.count("world") 

sumと理解を使用してワンライナー:

sum(line.count("world") for line in f) 

ノートその単語の境界が尊重されていません。部分文字列も一致します。句読点を正しく分割しなくても、代わりにline.split().count("world")を使用することを検討してください。 look hereを正しく区切ります。

0

ここでの問題は、あなたがラインで「世界」のすべてのインスタンスをカウントすることで、この問題を解決する

for line in f: 
    if "world" in line: 
     x=x+1 

一つの方法をやっているということです。

for line in f: 
    if "world" in line: 
     x+=line.count("world") 

別の方法として、個々の単語を数えます。次回のために

for line in f: 
    for word in line.split(): 
     if word == "world": 
      x+=1 

ことを忘れないでください:Fでのラインの 1.:全行ない一つの単語としてそれを取り、単語の複数のインスタンスは、その行にある場合、あなたのコードはどのように多くの行数を数えます言葉があります。 2.あなたが好きなヒントは、x = x + 1はxがxの値+1に等しいと言うことです。私があなただったらこの点を見てみます https://www.tutorialspoint.com/python/python_basic_operators.htm 基本的な使い方を教えていますオペレータは多くの時間と欲求不満を救うことができます。あなたの例では、x + = 1はx = x + 1と同じです。

Good Luck!

2
F = open("Dummy.txt", "r+") 
string = F.read() # For storing the file as a string 
print string.count("world") # Print the count of "world" in the file 
F.close() 
+1

を編集しました。それは、ファイルが相当に大きい場合に機能します。ファイルが巨大な場合は、一行ずつ読む方が良いです。 –

関連する問題