簡體   English   中英

使用python從文本文件返回唯一單詞出現的總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM