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
相关产品推荐
相关产品推荐

