Python如何实现获取txt文件整个文本中的最长单词
问题根因
原代码逐行迭代文件对象,每次仅针对当前行拆分出的单词计算最长值,因此只能逐行输出每行的最长单词,无法完成全文档范围的最长单词统计。
修正代码
常规小文件场景(推荐写法)
使用上下文管理器自动管理文件资源,一次性读取全量文本后统一拆分计算,代码最简洁:
with open("article.txt", encoding="utf-8") as article: full_text = article.read() print(max(full_text.split(), key=len))
- 写法优势:不需要手动调用
close()关闭文件,即使程序运行中抛出异常也能正常释放文件资源 - 适配逻辑:
split()不传参时,会自动将换行符、空格、制表符等所有空白字符作为分隔符切割文本,同时自动过滤连续空白、首尾空白产生的空字符串,天然适配带换行的文本结构
超大文件场景(低内存占用)
如果待处理文件体积达到GB级,一次性读取全量文本会占用过高内存,可以逐行遍历的同时动态更新全局最长单词,内存占用恒定极低:
longest = "" with open("article.txt", encoding="utf-8") as article: for line in article: current_line_max = max(line.split(), key=len, default="") if len(current_line_max) > len(longest): longest = current_line_max print(longest)
- 细节处理:给
max()传入default=""参数,避免遇到空行时split()返回空列表触发运行错误
内容的提问来源于stack exchange,提问作者Teriyaki
相关产品推荐
相关产品推荐

