利用Python實現分析給定文字字串中的字元統計資訊

子墨老师發表於2024-07-12

設計一個名為 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())

相關文章