利用Python实现分析给定文本字符串中的字符统计信息

设计一个名为 TextAnalyzer 的 Python 类,该类用于分析给定文本字符串中的字符统计信息。

类应具有以下功能:

  • 初始化:类初始化时接受一个字符串参数 text,并将其存储为类的属性。
  • 字符计数:实现一个方法 count_characters(),返回一个字典,其中键为文本中出现的不同字符(包括空格和标点符号),值为该字符在文本中出现的次数。
  • 单词计数:实现一个方法 count_words(),返回文本中单词的总数。假设单词由空格分隔。
  • 最常用字符:实现一个方法 most_common_char(),返回文本中出现次数最多的字符及其出现次数。如果有多个字符并列最常用,返回其中任意一个。
  • 句子计数:实现一个方法 count_sentences(),基于句号(.)、问号(?)、感叹号(!)来统计文本中句子的数量。 

运行示例

text = "Hello, world! This is a test. Another sentence? Yes, indeed!"
analyzer = TextAnalyzer(text)
print(analyzer.count_characters())  # 应输出字符计数字典
print(analyzer.count_words())      # 应输出单词数量,例如:6
print(analyzer.most_common_char()) # 可能输出:{' ': 4, 's': 3} 表示空格和's'都是最常见的字符之一
print(analyzer.count_sentences())   # 应输出句子数量,例如:3

参考答案

class TextAnalyzer:
    def __init__(self, text):
        self.text = text

    def count_characters(self):
        char_count = {}
        for char in self.text:
            char_count[char] = char_count.get(char, 0) + 1
        return char_count

    def count_words(self):
        words = self.text.split()
        return len(words)

    def most_common_char(self):
        char_freq = self.count_characters()
        max_count = max(char_freq.values())
        common_chars = [char for char, freq in char_freq.items() if freq == max_count]
        return common_chars[0], max_count

    def count_sentences(self):
        sentence_enders = ['.', '?', '!']
        sentences = [sent + char for char in sentence_enders for sent in self.text.split(char)]
        return len(sentences) - 1  # 减1是因为最后一个句子后面没有分隔符

# 示例使用
text = "Hello, world! This is a test. Another sentence? Yes, indeed!"
analyzer = TextAnalyzer(text)
print(analyzer.count_characters())
print(analyzer.count_words())
print(analyzer.most_common_char())
print(analyzer.count_sentences())
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值