You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何查找文本文件中包含最长单词的行?

解决找到最长单词所在行的问题

你的现有代码把整个文档的单词拆成了一个大列表,丢失了单词所属的行信息,所以没法定位到具体行。下面是修改后的代码,能同时找到最长单词以及它所在的行:

def find_longest_word_line():
    max_length = 0
    longest_word = ""
    target_line_num = 0
    target_line_content = ""
    
    # 使用with语句自动管理文件,避免忘记关闭
    with open("C:/Users/s.txt", "r", encoding='utf-8') as doc:
        # 逐行遍历,enumerate给每行加行号(从1开始,符合日常计数习惯)
        for line_num, line in enumerate(doc, start=1):
            # 拆分当前行的单词
            words = line.split()
            for word in words:
                # 检查当前单词长度是否超过记录的最大值
                if len(word) > max_length:
                    max_length = len(word)
                    longest_word = word
                    target_line_num = line_num
                    target_line_content = line.strip()  # 去掉换行符
    
    print(f"最长单词: '{longest_word}',长度: {max_length}")
    print(f"所在行号: {target_line_num}")
    print(f"行内容: {target_line_content}")

# 调用函数
find_longest_word_line()

关键改动说明:

  • 用with语句打开文件,无需手动关闭,更安全可靠
  • 用enumerate遍历行时直接获取行号,避免自己维护计数器
  • 逐行处理单词,同时记录该行的行号和内容,不会丢失行关联信息
  • 实时更新最长单词的相关信息,最后一次性输出结果

如果有多个单词长度相同且都是最长的,上面的代码会记录最后出现的那个。如果要记录所有最长单词的行,可以用列表存储结果,示例如下:

def find_all_longest_word_lines():
    max_length = 0
    longest_info = []
    
    with open("C:/Users/s.txt", "r", encoding='utf-8') as doc:
        for line_num, line in enumerate(doc, start=1):
            words = line.split()
            for word in words:
                word_len = len(word)
                if word_len > max_length:
                    # 发现更长的单词,清空之前的记录,更新最大值
                    max_length = word_len
                    longest_info = [{"word": word, "line_num": line_num, "line_content": line.strip()}]
                elif word_len == max_length:
                    # 长度相同,添加到记录列表
                    longest_info.append({"word": word, "line_num": line_num, "line_content": line.strip()})
    
    print(f"最长单词长度: {max_length}")
    print("所有最长单词及所在行:")
    for info in longest_info:
        print(f"单词: '{info['word']}',行号: {info['line_num']},行内容: {info['line_content']}")

find_all_longest_word_lines()

内容的提问来源于stack exchange,提问作者Luka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:10:33