如何在Python中查找小说中所需的单词?

24 浏览
0 Comments

如何在Python中查找小说中所需的单词?

我有一段文本,并且我在Python中使用读取模块得到了一个任务:

找出那些被称为Mr. XXX的人的名字。将结果保存在一个字典中,以名字作为键,使用次数作为值。例如:

  • 如果小说中有Mr. Churchill,那么包括{'Churchill' : 2}
  • 如果小说中有Mr. Frank Churchill,那么包括{'Frank Churchill' : 4}

文件是.txt格式,大约包含10-15个段落。

你有关于如何改进它的想法吗?(在一些单词后面它给我报错,我猜测错误是因为Mr. 出现在行尾。)

orig_text= open('emma.txt', encoding = 'UTF-8')
lines= orig_text.readlines()[32:16267]
counts = dict()
for line in lines:
    wordsdirty = line.split()
    try:
        print (wordsdirty[wordsdirty.index('Mr.') + 1])
    except ValueError:
        continue

0
0 Comments

在这个问题中,出现的原因是要在小说中找到特定的单词。解决方法是使用Python编程语言来实现。

首先,我们可以尝试使用正则表达式来找到包含特定单词的词组。在给定的示例中,我们使用了一个正则表达式模式来匹配以"Mr. "开头的词组。通过使用re.findall函数,我们可以找到所有匹配的词组,并将它们存储在一个列表中。

接下来,为了解决行的问题,我们需要读取整个文件的文本内容。可以使用file.read()函数来实现这一点。

然后,为了统计出现次数,我们可以使用Counter函数,它可以接受一个列表作为输入,并返回一个包含每个元素及其出现次数的字典。

最后,如果你想要从字典条目中删除"Mr. ",你可以使用x[0][4:]代替x[0]。

通过以上方法,我们可以在Python中找到小说中的特定单词,并统计它们的出现次数。

0
0 Comments

如何在Python中查找小说中所需的单词?

在这个问题中,原因是需要在一部小说中找到指定的单词。解决方法是使用正则表达式和捕获组。可以使用re.findall函数检索与正则表达式匹配的字符串列表,然后使用Counter模块创建一个字典并计算每个匹配项出现的次数。

具体代码如下:

import re
from collections import Counter
# 从整个文件中检索与正则表达式匹配的字符串列表
matches = re.findall("Mr\. ([a-zA-Z]+)", your_entire_file)  # 正则表达式可能需要调整
# 使用Counter计算每个匹配项的出现次数
word_count = Counter(matches)

另外,为了访问整个文件,可以将其映射到内存中。可以参考这个问题(链接)了解如何在不将整个文件读入内存的情况下进行搜索。

需要注意的是,上述代码可能无法处理像"Mr. Tom Smith"这样的名字。这是因为在编写答案时没有考虑到这种情况。

0