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

Python如何删除字符串中目标变量前后的内容以提取指定字段值

最优实现方案

根据你的使用场景可以选以下三种常用的稳定实现:

方案1:基于你现有索引思路完善(适合单字段快速提取)

你已经拿到了First Name:的起始索引,只需要计算字段值的起止位置切片即可,同时先修正你原有代码的参数错误:open的模式参数是mode不是more。

# 优先用with上下文管理器管理文件,无需手动关闭文件句柄
with open("data.txt", mode="r", encoding="utf-8") as f:
    raw_data = f.read()

field_name = "First Name:"
# 计算字段值的起始位置:跳过字段名本身的长度
value_start = raw_data.index(field_name) + len(field_name)
# 从起始位置往后找第一个换行符,就是字段值的结束位置
value_end = raw_data.find("\n", value_start)
# 切片后用strip()去掉前后多余的空白字符
first_name = raw_data[value_start:value_end].strip()

方案2:按行解析为字典(适合多字段批量提取)

如果后续还要提取城市、地址等其他字段,直接把所有内容解析为字典后续调用更方便,不需要重复写索引查找逻辑:

data = {}
with open("data.txt", mode="r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        # 按冒号最多拆分1次,避免值内容包含冒号时拆分出错
        key, val = line.split(":", 1)
        data[key.strip()] = val.strip()

# 直接按键取值即可,不存在时返回空字符串避免报错
first_name = data.get("First Name", "")

方案3:正则匹配(适合格式有浮动的场景)

如果字段和值之间的空格数量不固定、或者字段可能出现在任意位置,正则的容错性更高:

import re

with open("data.txt", mode="r", encoding="utf-8") as f:
    raw_data = f.read()

# 正则匹配规则:找到First Name:后面的所有非换行字符
match_res = re.search(r"First Name:\s*([^\n]+)", raw_data)
if match_res:
    first_name = match_res.group(1).strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:00