使用Python提取Excel中-与>间的不定长值及日期时间至列表
解决方案
需求明确
处理Excel文件B列的字符串数据,完成两个提取任务:
- 从每个
X-Y>[...]片段中,提取-与>之间的数字,汇总成一个列表 - 从每个片段的方括号
[]内,提取日期时间字符串,汇总成另一个列表
实现代码
用pandas读取Excel,结合正则表达式完成提取:
import pandas as pd import re # 替换为你的Excel文件路径 df = pd.read_excel("your_file.xlsx", usecols=["B"]) # 定义正则表达式,分别匹配目标数字和日期时间 num_regex = re.compile(r"-(\d+)>") dt_regex = re.compile(r"\[([^\]]+)\]") num_list = [] dt_list = [] # 遍历B列每一行内容 for content in df["B"].dropna(): # 按"+"拆分单元格内的多个片段 segments = content.split("+") for seg in segments: # 提取数字并转整数 num_match = num_regex.search(seg) if num_match: num_list.append(int(num_match.group(1))) # 提取日期时间字符串 dt_match = dt_regex.search(seg) if dt_match: dt_list.append(dt_match.group(1)) # 输出结果 print("提取的数字列表:", num_list) print("提取的日期时间列表:", dt_list)
代码说明
- 读取Excel:指定读取B列,用
dropna()跳过空行 - 正则匹配:
num_regex:精准捕获-后、>前的数字dt_regex:捕获[和]之间的所有内容(即日期时间)
- 遍历处理:每个单元格按
+拆分成独立片段,逐个匹配提取结果,分别存入对应列表
运行后会得到符合要求的两个列表:
- 数字列表:
[36, 34, 35, 65, 33, 25, 15, 35, 21, 1, 7, 55] - 日期时间列表:对应每个片段的时间字符串集合
内容的提问来源于stack exchange,提问作者Momoko
相关产品推荐
相关产品推荐

