如何用Python提取格式为p+数字+s的元数据字段?
解决方案
核心思路
用正则表达式匹配符合p+数字+s(大小写不敏感)格式的键,从fcs_metadata中提取对应内容,单独处理'Markers analysed'项(它不属于简单的键映射,需要自定义筛选逻辑)。
代码实现
导入正则模块后,修改现有代码如下:
import re metadata_crosswalk={ 'Date of Analysis': 'date', 'Creator':'export user name', 'Instrument':'cyt', 'Number of Samples':'tot' } metadata = {} # 处理常规键映射 for coscine_key,fcs_key in metadata_crosswalk.items(): print("looking at metadata key (coscine)", coscine_key) print("looking to store fcs metadata key", fcs_key, "| value:", fcs_metadata[fcs_key]) metadata[coscine_key] = fcs_metadata[fcs_key] # 处理'Markers analysed'的特殊筛选逻辑 # 正则规则:以大小写p开头,后跟至少一个数字,以s结尾 pattern = re.compile(r'^[pP]\d+s$') # 提取符合条件的键值对(若只需值的列表,可换成列表推导式) markers_analysed = {key: fcs_metadata[key] for key in fcs_metadata if pattern.match(key)} # 仅需值的话用这行:markers_analysed = [fcs_metadata[key] for key in fcs_metadata if pattern.match(key)] metadata['Markers analysed'] = markers_analysed print("Markers analysed extracted:", markers_analysed)
代码说明
re.compile(r'^[pP]\d+s$'):预编译正则表达式,^和$确保整个键完全匹配格式,避免误匹配包含该模式的长键。- 字典/列表推导式:快速筛选目标数据,可根据需求选择保留键值对或仅保留值。
- 单独处理特殊项:因为
'Markers analysed'不是一对一的键映射,所以脱离原循环单独提取后加入metadata字典。
内容的提问来源于stack exchange,提问作者kitcat
相关产品推荐
相关产品推荐

