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

Python解析文本文件查找特定单词,代码无法返回对应词义求助

问题:Python文本解析无法匹配目标单词,始终返回“Word not found”

问题描述

编写Python代码解析文本文件,检查特定单词并返回词义,但代码始终执行else分支输出“Word not found”,无法返回目标词义。

原代码

def parse_file_and_check_word(file_path, user_input):
    with open(file_path, 'r') as f:
        for line in f:
            split_line = line.strip().split('-')
            if len(split_line) == 2:
                word, word_meaning = split_line
            if word == user_input:
                return word_meaning
        return None


t = input("Enter a word to look up")


word_meaning = parse_file_and_check_word("some_file.txt", t)
if word_meaning:
    print(word_meaning)
else:
    print('Word not found')

文本文件内容(some_file.txt)

run - to move

Action Potential - 40mv

safe - not harmed

light - something bright

期望输出

Enter a word to look up: Action Potential
40mv

错误原因

  1. 分隔符匹配错误:文件中单词和词义用-(减号前后带空格)分隔,但代码用split('-')拆分,导致拆分后的单词带尾空格(如"run ")、词义带头空格(如" to move"),和用户输入的无空格单词无法匹配。
  2. 逻辑分支错误:判断word == user_input的代码不在len(split_line) == 2的分支内,遇到空行或格式错误的行时,word变量可能未定义(或保留上一行的旧值),引发错误或错误匹配。
  3. 未处理用户输入空格:用户输入可能带前后空格,直接用于匹配会导致不相等。

修复后的代码

def parse_file_and_check_word(file_path, user_input):
    # 处理用户输入,去掉前后空格
    target_word = user_input.strip()
    with open(file_path, 'r') as f:
        for line in f:
            stripped_line = line.strip()
            # 跳过空行
            if not stripped_line:
                continue
            # 用' - '作为分隔符拆分,匹配文件格式
            split_line = stripped_line.split(' - ')
            if len(split_line) == 2:
                word, word_meaning = split_line
                # 去掉单词前后空格,确保匹配
                if word.strip() == target_word:
                    # 返回整洁的词义结果
                    return word_meaning.strip()
        return None


t = input("Enter a word to look up: ")

word_meaning = parse_file_and_check_word("some_file.txt", t)
if word_meaning:
    print(word_meaning)
else:
    print('Word not found')

修复说明

  • 对用户输入和文件中的单词执行strip(),消除前后空格的影响
  • 用' - '作为分隔符拆分行,精准匹配文件中的格式
  • 将单词匹配逻辑放到格式正确的分支内,跳过空行,避免未定义变量问题
  • 返回词义时执行strip(),输出更整洁的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:37