如何从指定列表字符串中提取Gnd和Stem对应的2.35、4.55数值
嘿,我来帮你搞定这个数值提取的需求!针对你给出的字符串,用正则表达式来精准匹配是最直接高效的方式,下面是具体的解决方案:
提取指定关键词对应数值的实现方案
首先,你的原始数据是这样的:
myData = ["GndWork0920932jdjs-----#2.35 InherenowanotheeStemWork83kkjkfjks-----#4.55"]
我们可以借助Python的re模块,通过正则表达式匹配**关键词(Gnd/Stem)**后跟随的内容,精准捕获-----#后面的数值部分。
具体代码实现
import re # 取出列表中的目标字符串 target_str = myData[0] # 定义通用提取函数,根据关键词获取对应数值 def extract_target_value(keyword, text): # 正则规则:匹配关键词后任意字符,直到-----#,然后捕获小数数值 pattern = rf"{keyword}.*?-----#(\d+\.\d+)" match_result = re.search(pattern, text) # 如果匹配到结果就返回数值,否则返回None return match_result.group(1) if match_result else None # 提取Gnd对应的数值 gnd_num = extract_target_value("Gnd", target_str) # 提取Stem对应的数值 stem_num = extract_target_value("Stem", target_str) print(f"Gnd对应的数值:{gnd_num}") # 输出:2.35 print(f"Stem对应的数值:{stem_num}") # 输出:4.55
代码逻辑说明
- 正则表达式
rf"{keyword}.*?-----#(\d+\.\d+)"的作用:{keyword}:精准匹配你指定的关键词(Gnd或Stem).*?:非贪婪模式匹配任意字符,避免过度匹配到其他关键词的内容(\d+\.\d+):捕获小数格式的数值,\d+匹配数字,\.匹配小数点
re.search()会在字符串中找到第一个符合规则的匹配结果,正好对应你需要的单个数值
如果后续你的字符串中出现多个相同关键词的情况,只需要把re.search()换成re.findall(),就能获取所有匹配的数值列表啦。
内容的提问来源于stack exchange,提问作者magicsword
相关产品推荐
相关产品推荐

