1

これは私がこれまでに持っているものですが、私のpparagraphには5つの終止符しか含まれていないため、5つの文しかありません。しかし、答えとして14を返し続けます。誰か助けてもらえますか?

file = open ('words.txt', 'r')
lines= list (file)
file_contents = file.read()
print(lines)
file.close()
words_all = 0
for line in lines:
    words_all = words_all + len(line.split())
    print ('Total words:   ', words_all)
full_stops = 0
for stop in lines:
    full_stops = full_stops + len(stop.split('.'))
print ('total stops:    ', full_stops)

これがtxtファイルです

ターニングマシンは、ルールの表に従ってテープのストリップ上のシンボルを操作するデバイスです。その単純さにもかかわらず、チューリングマシンは、任意のコンピューターアルゴリズムのロジックをシミュレートするように適合させることができ、コンピューター内のCPUの機能を説明するのに特に役立ちます。「チューリング」マシンは、1936年に「a(utomatic)-machine」と呼ばれたAlanTuringによって説明されました。チューリングマシンは、実用的なコンピューティングテクノロジーとしてではなく、コンピューティングマシンを表す架空のデバイスとして意図されています。チューリングマシンは、コンピューター科学者が機械計算の限界を理解するのに役立ちます。

4

4 に答える 4

6

行にピリオドが含まれていない場合、splitは単一の要素を返します:行自体:

>>> "asdasd".split('.')
    ['asdasd']

つまり、行数と期間数を数えているのです。なぜファイルを行に分割するのですか?

with open('words.txt', 'r') as file:
    file_contents = file.read()

    print('Total words:   ', len(file_contents.split()))
    print('total stops:    ', file_contents.count('.'))
于 2013-03-05T15:48:41.050 に答える
6

正規表現を使用します。

In [13]: import re
In [14]: par  = "This is a paragraph? So it is! Ok, there are 3 sentences."
In [15]: re.split(r'[.!?]+', par)
Out[15]: ['This is a paragraph', ' So it is', ' Ok, there are 3 sentences', '']
于 2013-03-05T15:52:57.950 に答える
6

それを行う最も簡単な方法は次のとおりです。

import nltk
nltk.download('punkt')
from nltk.tokenize import sent_tokenize

sentences = 'A Turning machine is a device that manipulates symbols on a strip of tape according to a table of rules. Despite its simplicity, a Turing machine can be adapted to simulate the logic of any computer algorithm, and is particularly useful in explaining the functions of a CPU inside a computer. The "Turing" machine was described by Alan Turing in 1936, who called it an "a(utomatic)-machine". The Turing machine is not intended as a practical computing technology, but rather as a hypothetical device representing a computing machine. Turing machines help computer scientists understand the limits of mechaniacl computation.'

number_of_sentences = sent_tokenize(sentences)

print(len(number_of_sentences))

出力:

5
于 2018-11-07T18:17:38.520 に答える
0

試す

print "total stops: ", open('words.txt', 'r').read().count(".")

詳細:

with open("words.txt") as f:
    data = f.read()
    print "total stops: ", data.count(".")
于 2013-03-05T15:47:58.717 に答える