python查询人名出现次数
时间: 2023-08-23 12:03:46 浏览: 213
你可以使用Python中的字典(dictionary)来完成人名出现次数的查询。具体的实现步骤如下:
1. 读取文本文件,将文件中的内容存储在一个字符串变量中。
2. 将字符串变量中的每个单词分割出来,用空格或标点符号作为分隔符。
3. 对于每个单词,判断它是否为人名。可以使用第三方库如NLTK或Stanford NER来完成人名识别,也可以使用简单的规则来判断,例如:如果单词的首字母是大写字母并且它前面的单词不是介词或冠词,则认为它是人名。
4. 如果单词是人名,则将它添加到字典中,并将对应的值加1;如果字典中已经存在该人名,则将对应的值加1。
5. 完成文本文件中所有单词的处理后,可以按照出现次数从大到小对人名进行排序,或者只输出出现次数最多的前几个人名。
示例代码如下:
```python
import re
# 读取文本文件,将文件中的内容存储在一个字符串变量中。
with open('text.txt', 'r') as f:
text = f.read()
# 将字符串变量中的每个单词分割出来,用空格或标点符号作为分隔符。
words = re.findall(r'\w+', text)
# 定义一个空字典,用于存储人名和对应的出现次数。
names = {}
# 对于每个单词,判断它是否为人名。
for i in range(1, len(words)):
if words[i][0].isupper() and words[i-1].lower() not in ['a', 'an', 'the', 'of', 'in', 'on']:
# 如果单词是人名,则将它添加到字典中,并将对应的值加1。
if words[i] in names:
names[words[i]] += 1
else:
names[words[i]] = 1
# 按照出现次数从大到小对人名进行排序。
sorted_names = sorted(names.items(), key=lambda x: x[1], reverse=True)
# 输出出现次数最多的前几个人名。
for i in range(10):
print(sorted_names[i][0], sorted_names[i][1])
```
这段代码假设文本文件名为text.txt,可以根据实际情况进行修改。
阅读全文