如何在Python中查找小说中所需的单词?
如何在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
在这个问题中,出现的原因是要在小说中找到特定的单词。解决方法是使用Python编程语言来实现。
首先,我们可以尝试使用正则表达式来找到包含特定单词的词组。在给定的示例中,我们使用了一个正则表达式模式来匹配以"Mr. "开头的词组。通过使用re.findall函数,我们可以找到所有匹配的词组,并将它们存储在一个列表中。
接下来,为了解决行的问题,我们需要读取整个文件的文本内容。可以使用file.read()函数来实现这一点。
然后,为了统计出现次数,我们可以使用Counter函数,它可以接受一个列表作为输入,并返回一个包含每个元素及其出现次数的字典。
最后,如果你想要从字典条目中删除"Mr. ",你可以使用x[0][4:]代替x[0]。
通过以上方法,我们可以在Python中找到小说中的特定单词,并统计它们的出现次数。
如何在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"这样的名字。这是因为在编写答案时没有考虑到这种情况。