计算文件中的单词总数?

时间:2019-05-18 07:29:19

标签: python python-3.x dictionary

我想找到文件(文本/字符串)中单词的总数。我可以用我的代码获得输出,但是我不确定它是否正确。这里有一些示例文件供大家尝试并查看获得的结果。 另请注意,不允许使用任何模块/库。 样本1:https://www.dropbox.com/s/kqwvudflxnmldqr/sample1.txt?dl=0

sample2-https://www.dropbox.com/s/7xph5pb9bdf551h/sample2.txt?dl=0

sample3-https://www.dropbox.com/s/4mdb5hgnxyy5n2p/sample3.txt?dl=0

在计算单词数之前,您必须考虑一些事情。

  1. 句子是一系列单词,后跟句号,问号或感叹号,而后者又必须带引号(因此,句子是引号或口语的结尾)话语)或空白(空格,制表符或换行符)。 例如,如果句末未出现句号,则应将其视为空白,因此可以结束单词。 像3.42就是两个字。否则P.yth.on将是3个字。

  2. 双连字符(-)代表被视为空格字符。 话虽这么说,首先,我打开并读取文件以获取所有文本。然后,我将所有无用的字符替换为空格,以便更轻松地计算单词。这也包括“-”。

然后我将文本拆分为单词,创建了一个字典来存储单词的数量。完成字典后,我将所有值相加以获得单词总数,并将其打印出来。参见下面的代码:

def countwords():
    filename = input("Name of file? ")
    text = open(filename, "r").read()
    text = text.lower() 
    for ch in '!.?"#$%&()*+/:<=>@[\\]^_`{|}~': 
        text = text.replace(ch, ' ')
    text = text.replace('--', ' ')          
    text = text.rstrip("\n")    
    words = text.split()       
    count = {}                 
    for w in words:
        count[w] = count.get(w,0) + 1   
    wordcount = sum(count.values())     
    print(wordcount)

因此对于sample1文本文件,我的字数是321, 样本2:542 对于样本3:139
我希望是否可以将这些答案与这里的一些python专家进行比较,看看我的结果是否正确以及它们是否不是我做错的事情。

1 个答案:

答案 0 :(得分:-1)

您可以使用正则表达式尝试此解决方案。

#word counter using regex
import re
while True:
    string =raw_input("Enter the string: ")
    count = len(re.findall("[a-zA-Z_]+", string))
    if line == "Done": #command to terminate the loop
        break
    print (count)
print ("Terminated")
相关问题