Python类代码调试:解析analysedText类构造函数与freqAll方法错误
代码缺陷解析
直接触发报错的语法问题
- 类定义缺少冒号:第一行
class analysedText(object)末尾必须添加冒号:,这是Python类定义的强制语法要求,缺失会直接触发语法错误。 - freqAll方法的列表调用错误:
wordList(word)是错误写法,列表不是可调用对象,统计单词出现次数需使用列表的count()方法,正确写法为wordList.count(word)。
逻辑与优化问题(不直接报错但不符合需求)
- 标点替换方式冗余:逐个调用
replace处理标点的扩展性差,若需新增标点处理会重复写代码。建议改用正则表达式一次性替换指定标点:import re; formattedText = re.sub(r'[.,!?]', ' ', text)。 - split(' ')产生空字符串:用
split(' ')分割文本时,连续空格会生成空字符串元素,最终词频字典会包含空字符串的统计结果。应使用无参数的split(),它会自动分割任意数量空白字符,同时忽略首尾空白,得到干净的单词列表:wordList = self.fmtText.split()。
修正后的完整代码
class analysedText(object): def __init__(self, text): import re formattedText = re.sub(r'[.,!?]', ' ', text) formattedText = formattedText.lower() self.fmtText = formattedText def freqAll(self): wordList = self.fmtText.split() wordDict = {} for word in set(wordList): wordDict[word] = wordList.count(word) return wordDict
内容的提问来源于stack exchange,提问作者Cole Sorensen
相关产品推荐
相关产品推荐

