如何用Python查找TXT文件中最长句子?现有代码仅返回首字符
问题分析与修复方案
你的代码之所以只返回第一个字符,核心问题有两个:
- 错误使用
max()函数:max(txt, key=len)会把字符串txt拆解成单个字符迭代,每个字符的长度都是1,最终返回的是该行的第一个字符(当所有元素的key值相同时,max会返回第一个遇到的元素)。 - 完全没实现句子拆分逻辑:代码没有按句号
.分割句子,也没处理句子跨行的情况,更没有全局跟踪最长句子,只是逐行做了无意义的字符比较。
修正后的代码
def recherche(source): "find the biggest sentence" longest_sentence = "" # 用with语句自动管理文件,无需手动close with open(source, "r") as fs: # 一次性读取全部内容,处理跨行句子 full_content = fs.read() # 按句号分割句子,过滤空内容并去除前后空格 sentences = [sentence.strip() for sentence in full_content.split(".") if sentence.strip()] # 找到最长的句子 if sentences: longest_sentence = max(sentences, key=len) print(longest_sentence) recherche("for92.txt")
核心改进说明
- 文件管理优化:使用
with语句打开文件,程序结束后会自动关闭文件,避免资源泄漏。 - 跨行句子处理:一次性读取整个文件内容,解决句子可能跨多行的问题。
- 正确拆分句子:通过
split(".")分割出所有句子,再用列表推导式过滤掉分割后产生的空字符串(比如文件末尾的句号、连续句号等情况),同时去除句子前后的空白字符。 - 全局跟踪最长句子:遍历所有分割后的句子,用
max()找到长度最长的那个,最后统一输出结果。
内容的提问来源于stack exchange,提问作者Selena9
相关产品推荐
相关产品推荐

