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

如何在文本文件中匹配指定关键词并提取内容至三个列表

提取文本指定字段内容到列表的代码修正

需求说明

  • 读取格式固定的文本文件,提取Name :、Nationality:、Age :(Name、Age与冒号间含若干空格)后的内容
  • 将提取的内容分别存入列表l_name、l_nationality、l_age
  • 函数仅接收文件名作为参数,返回这三个列表

原代码的问题

  1. 缩进错误:with代码块和return语句未缩进在函数内部,违反Python代码块规则,会直接触发语法错误。
  2. 变量未定义:使用了未声明的text变量,且一次性读取整个文件为字符串,无法逐行判断内容。
  3. 列表操作错误:错误地对字符串调用append()方法,同时用赋值操作替代了列表的追加逻辑。
  4. 逻辑错误:一次性读取全部文件内容,无法针对每行进行字段匹配。

修正后的代码

def read_information(file_name):
    l_name = []
    l_nationality = []
    l_age = []

    with open(file_name) as file:
        # 逐行遍历文件内容
        for line in file:
            line_clean = line.strip()
            if not line_clean:
                continue  # 跳过空行
            
            # 匹配对应字段并提取内容
            if line_clean.startswith("Name       :"):
                content = line_clean.split(":", 1)[1].strip()
                l_name.append(content)
            elif line_clean.startswith("Nationality:"):
                content = line_clean.split(":", 1)[1].strip()
                l_nationality.append(content)
            elif line_clean.startswith("Age        :"):
                content = line_clean.split(":", 1)[1].strip()
                l_age.append(content)
    
    return l_name, l_nationality, l_age

修正说明

  • 修复缩进问题,确保所有逻辑代码都在函数内部。
  • 改为逐行读取文件,针对每行进行内容匹配,符合文本文件的常规处理逻辑。
  • 使用strip()去除行首尾空白字符,避免空行或多余空格干扰匹配。
  • 通过split(":", 1)将行内容按冒号分割为两部分,提取冒号后的内容并清理多余空格,再调用列表append()方法添加到对应列表中。

内容的提问来源于stack exchange,提问作者Learning one step at a time

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:30:52