我想找到文件(文本/字符串)中单词的总数。我可以用我的代码获得输出,但是我不确定它是否正确。这里有一些示例文件供大家尝试并查看获得的结果。 另请注意,不允许使用任何模块/库。 样本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
在计算单词数之前,您必须考虑一些事情。
句子是一系列单词,后跟句号,问号或感叹号,而后者又必须带引号(因此,句子是引号或口语的结尾)话语)或空白(空格,制表符或换行符)。 例如,如果句末未出现句号,则应将其视为空白,因此可以结束单词。 像3.42就是两个字。否则P.yth.on将是3个字。
双连字符(-)代表被视为空格字符。 话虽这么说,首先,我打开并读取文件以获取所有文本。然后,我将所有无用的字符替换为空格,以便更轻松地计算单词。这也包括“-”。
然后我将文本拆分为单词,创建了一个字典来存储单词的数量。完成字典后,我将所有值相加以获得单词总数,并将其打印出来。参见下面的代码:
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专家进行比较,看看我的结果是否正确以及它们是否不是我做错的事情。
答案 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")