如何使用regex正则将合并的测量日期时间文本拆分为日期、时间列
测量数据日期时间正则分列实现方案
核心正则表达式
匹配单行有效测量记录的正则如下,开启多行匹配模式可批量处理全量数据:
^Measurement date: (\d{2}\.\d{2}\.\d{2}) (\d{2}:\d{2}:\d{2})$
正则分组说明:
- 第一个捕获组
(\d{2}\.\d{2}\.\d{2}):提取xx.xx.xx格式的日期值,对应输出的date列 - 第二个捕获组
(\d{2}:\d{2}:\d{2}):提取xx:xx:xx格式的时间值,对应输出的time列 - 正则仅匹配格式完整的测量记录行,会自动跳过仅含
.的省略占位行,不会产生误匹配
使用时需开启正则的多行匹配模式(即m修饰符),确保^和$可以匹配每一行的首尾位置
不同场景落地方法
通用文本编辑器替换(VS Code/Notepad++/Sublime Text 均支持)
- 打开查找替换面板,勾选「正则表达式」选项
- 查找输入框填入上述正则表达式(如果编辑器默认不支持行首行尾锚定匹配,可去掉首尾的
^和$) - 替换输入框填入
$1 $2,中间空格数量可根据对齐需求调整,也可替换为制表符\t方便后续导入表格工具 - 执行全部替换后,手动在内容最顶部添加表头
date time,删除残留的.占位行即可得到目标格式
Python 批量处理多份测量文件
如果需要批量处理目录下的多份数据文件,可直接运行以下脚本:
import re import os # 预编译正则,开启多行匹配 match_pattern = re.compile(r'^Measurement date: (\d{2}\.\d{2}\.\d{2}) (\d{2}:\d{2}:\d{2})$', re.M) # 遍历当前目录下的txt格式测量文件,可根据实际文件后缀修改 for file_name in os.listdir('./'): if not file_name.endswith('.txt'): continue # 读取原始文件内容 with open(file_name, 'r', encoding='utf-8') as f: raw_content = f.read() # 提取所有有效日期时间对 record_list = match_pattern.findall(raw_content) # 按目标格式拼接输出内容 output_content = "date time\n" for date_val, time_val in record_list: output_content += f"{date_val:<34}{time_val}\n" # 写入处理后的新文件 with open(f'formatted_{file_name}', 'w', encoding='utf-8') as f: f.write(output_content)
表格工具处理(Excel/WPS)
如果数据已经导入表格:
- 先用查找替换功能把所有行开头的
Measurement date:批量替换为空 - 选中数据列,使用「数据-分列」功能,选择「分隔符号-空格」作为分列依据,即可自动把日期和时间拆分为两列
- 给两列分别添加列名
date和time,调整列宽对齐即可
内容的提问来源于stack exchange,提问作者tuco
相关产品推荐
相关产品推荐

