[英]Return sum of unique word occurrences from a text file using python
我正在嘗試為課程更新我的舊腳本。 通常,如果列表中的任何項目出現在該行中,則此腳本只會記錄“ 1”。 但是,現在我希望它計算和總結那些唯一單詞在該行中出現的次數。 例如,使用以下列表:
ess = ['jim','bob','sally','tom']
.
.
.
elif 'SCHOOL' in line:
csvfile.write( str(line.count(',') + 1)+ ',')
flag = 0
for staff in ess:
if staff in line:
csvfile.write('1')
flag = 1
break
if flag == 1:
csvfile.write('\n')
else:
csvfile.write('0\n')
如果出現任何名稱,而不是簡單地記錄“ 1”。 我希望它返回該行中出現多少個名稱的總和。 例如,如果吉姆和莎莉都出現在該行中,則返回“ 2”
您可以簡單地對字符串/句子運行多個計數。
或者您也可以split
為“”(空格)分隔這句話,走了過來說返回的列表,並檢查每個字等於你想要的話之一:
我會做這樣的事情:
sum = 0
for line in lines:
split_list = line.split(" ")
for word in ess:
if word in split_list :
sum+=1
或替代:sum = 0表示行中的行:for ess中的單詞:sum + = line.count(word)
有兩種方法可以嘗試此操作:
1)您不在乎一個名稱出現在句子中的次數,只要該名稱至少出現一次即可:
def names_in_sentence(sentence_str):
return sum([1 for name in lis_names if name in sentence_str])
這是一種相當蟒蛇的方法。 我正在使用列表推導為輸入句子中存在的每個名稱創建一個1的列表。
2)您確實關心一個句子中一個名字出現了多少次。 例如,如果句子是“這是一個鮑勃,他是個鮑勃”,您將返回2:
def names_in_sentence(sentence_str):
return sum([sentence.count(name) for name in lis_names])
在這種情況下,我使用列表推導來計算每個名稱在句子中出現的次數,並對列表求和。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.