参考链接: Python | 抓取网页并获得最常用单词的程序
如何用Python统计含多个字符串的列表中每个单词出现的次数?
要从多个字符窜中统计次数的话,我们先来看一个简单的例子:
先从一个字符串中统计每个单词出现的次数。
如字符串:
str=“You may be out of my sight, but never out of my mind.”
为了简化逻辑,我在这里将字符串做一些处理,如下:
str=“You may be out of my sight but never out of my mind” (将所有的标点全都换成了空格,)
1.首先:
在这里首先要向初学者介绍一个Python常用的一个方法:split() 语法:
str.split(str="", num=string.count(str)).
参数:
str -----分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。 num -----分割次数。默认为 -1, 即分隔所有。(次数不限)
返回值:
返回分割后的字符串列表。
注意:Python 的 split() 方法通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
示例:
str = "Whatever is worth doing is worth doing well" #这是一个字符串
print(str.split()) # 以空格为分隔符,分割所有
print(str.split(' ', 1 )) # 以空格为分隔符,分隔成两个(从第一个空格开始分割)
print(str.split(' ', 2 )) # 以空格为分隔符,分隔成三个(从第一个空格开始分割)
#......
运行结果:
[‘Whatever’, ‘is’, ‘worth’, ‘doing’, ‘is’, ‘worth’, ‘doing’, ‘well’] [‘Whatever’, ‘is worth doing is worth doing well’] [‘Whatever’, ‘is’, ‘worth doing is worth doing well’] #…
2.继续:
现在,我们已经了解了关键的方法,现在我们会到最初的问题: 对于一个字符串统计每个单词出现的次数。 代码如下:
List=["You may be out of my sight but never out of my mind."] #定义了只含一个字符串的列表
#根据情况判断,输出应为字典较为合适
dict={} #定义一个空的字典,在后面的运算中逐步添加数据
keys=List[0].split() #对列表中的字符串按空格分割
for key in keys: #遍历整个列表
if key in dict.keys(): #判断当前key是否已经存在
dict[key]=dict[key]+1 #在当前key的个数上加 1
else:
dict[key]=1 #当前key第一次出现
print(dict)
运行结果:
{‘You’: 1, ‘may’: 1, ‘be’: 1, ‘out’: 2, ‘of’: 2, ‘my’: 2, ‘sight’: 1, ‘but’: 1, ‘never’: 1, ‘mind.’: 1}
3.最后:
回到最原始的问题:
如何用Python统计含多个字符串的列表中每个单词出现的次数?
当列表中含有多个字符串时,我们就要用到 for 的双重循环来遍历整个列表,代码如下:
List=["hello you","hello my friends","you are so beautiful","you are a beautiful girl","a good boy"]
dict={}
for list in List:
keys=list.split(" ")
for key in keys:
if key in dict.keys():
dict[key]=dict[key]+1
else:
dict[key]=1
print(dict)
运行结果:
{‘hello’: 2, ‘you’: 3, ‘my’: 1, ‘friends’: 1, ‘are’: 2, ‘so’: 1, ‘beautiful’: 2, ‘a’: 2, ‘girl’: 1, ‘good’: 1, ‘boy’: 1}