如何用Python find方法提取lea=后至空格前的可变长度值
Python 2.7.5 提取"lea="后到首个空格前的可变长度值
问题背景
原代码通过固定切片[r+4:r+12]提取值,仅在目标长度固定时有效,无法适配可变长度的场景,需要修改逻辑来准确定位取值范围。
解决方案
方法1:两次find精准定位
找到lea=的起始位置后,从该位置向后查找第一个空格的位置,以此确定取值的结束边界,兼容lea=为行尾字段的情况:
def getLea(icd): with open("icds.txt") as f: for line in f: lea_start = line.find("lea=") if lea_start != -1: value_start = lea_start + 4 # 从value_start位置开始找第一个空格 value_end = line.find(" ", value_start) if value_end != -1: res = line[value_start:value_end].strip() else: # 处理lea是最后一个字段的情况 res = line[value_start:].strip() return res return None
方法2:分割行后匹配键值对
将行按空格分割为多个字段,遍历字段找到以lea=开头的项,直接截取后续内容:
def getLea(icd): with open("icds.txt") as f: for line in f: for part in line.strip().split(): if part.startswith("lea="): res = part[4:] return res return None
方法3:正则表达式匹配
利用正则表达式直接匹配lea=后的非空白字符序列,灵活适配各种格式:
import re def getLea(icd): lea_pattern = re.compile(r'lea=(\S+)') with open("icds.txt") as f: for line in f: match_result = lea_pattern.search(line) if match_result: res = match_result.group(1) return res return None
内容的提问来源于stack exchange,提问作者Antonio Novi
相关产品推荐
相关产品推荐

