だから私はここ数ヶ月Pythonを学んでいて、Wordが文に出現する回数をカウントする関数をどのように書くのか疑問に思っていました。誰かがいただければ幸いです。これを行うための段階的な方法を教えてください。
素早い回答:
_def count_occurrences(Word, sentence):
return sentence.lower().split().count(Word)
_
'some string.split()
は、空白(スペース、タブ、改行)の文字列をWord風のもののリストに分割します。次に、['some', 'string'].count(item)
は、リストでitem
が発生した回数を返します。
それは句読点の削除を処理しません。 _string.maketrans
_ および _str.translate
_ を使用してこれを行うことができます。
_# Make collection of chars to keep (don't translate them)
import string
keep = string.lowercase + string.digits + string.whitespace
table = string.maketrans(keep, keep)
delete = ''.join(set(string.printable) - set(keep))
def count_occurrences(Word, sentence):
return sentence.lower().translate(table, delete).split().count(Word)
_
ここで重要なのは、文字、数字、スペースを除くすべてのASCII文字が含まれるように文字列delete
を作成したことです。次に、この場合の_str.translate
_は、文字列を変更しない変換テーブルを取得しますが、削除する文字列も取得します。
ウィルバーフォースは迅速で正しい答えを持っています、そして私は長い間「その結論に到達する方法」の答えを与えます。
まず、始めるためのいくつかのツールと、自分自身に尋ねる必要のあるいくつかの質問があります。
この問題を解決するための親友であるため、pythonドキュメントの シーケンスタイプ )のセクションを読む必要があります。真剣に読んでください。それを読んで、あなたはいくつかのアイデアを持っているはずです。たとえば、長い文字列を取り、split()関数を使用してそれを分割することができます。
mystring = "This sentence is a simple sentence."
result = mystring.split()
print result
print "The total number of words is: " + str(len(result))
print "The Word 'sentence' occurs: " + str(result.count("sentence"))
入力文字列を受け取り、それを任意の空白で分割すると、次のようになります。
["This", "sentence", "is", "a", "simple", "sentence."]
The total number of words is 6
The Word 'sentence' occurs: 1
ここで、2番目の「文」の終わりにまだ期間があることに注意してください。 'sentence'は 'sentence。'と同じではないため、これは問題です。リストを調べて単語を数える場合は、文字列が同一であることを確認する必要があります。句読点を見つけて削除する必要があるかもしれません。
これに対する素朴なアプローチは次のようになります。
no_period_string = mystring.replace(".", " ")
print no_period_string
生理のない文を私に与えるには:
"This sentence is a simple sentence"
また、入力が1つの文になるのか、それともテキストの段落になるのかを決定する必要があります。入力に多くの文がある場合は、それらを個々の文に分割する方法を見つけて、ピリオド(または疑問符)をfindすることをお勧めします。 、または感嘆符、または文を終了するその他の句読点)。文字列のどこに「センテンスターミネータ」があるかがわかれば、その時点で文字列をsplit、またはそのようなものにすることができます。
これを自分で試してみてください。ドキュメント内の特定の機能を確認するのに十分なヒントが含まれていることを願っています。
最も簡単な方法:
def count_occurrences(Word, sentence):
return sentence.count(Word)
あなたはこのようにそれを行うことができます:
def countWord(Word):
numWord = 0
for i in range(1, len(Word)-1):
if Word[i-1:i+3] == 'Word':
numWord += 1
print 'Number of times "Word" occurs is:', numWord
次に、文字列を呼び出します。
countWord('wordetcetcetcetcetcetcetcword')
戻ります: Number of times "Word" occurs is: 2
python文字列とforループについて知っていると思います。
def count_occurences(s,Word):
count = 0
for i in range(len(s)):
if s[i:i+len(Word)] == Word:
count += 1
return count
mystring = "This sentence is a simple sentence."
myword = "sentence"
print(count_occurences(mystring,myword))
説明:s [i:i + len(Word)]:文字列sをスライスして、Word(引数)カウントと同じ長さのWordを抽出します+ = 1:一致するたびにカウンターを増やします。
def check_Search_WordCount(mySearchStr、mySentence):
len_mySentence = len(mySentence)
len_Sentence_without_Find_Word = len(mySentence.replace(mySearchStr,""))
len_Remaining_Sentence = len_mySentence - len_Sentence_without_Find_Word
count = len_Remaining_Sentence/len(mySearchStr)
return (int(count))