如何将日期与时间同列的CSV电力数据转换为标准格式?
电力CSV数据格式转换方案
原始数据的核心问题是日期与时间分离存储,需要将日期与对应时段的时间、功率合并,同时转换日期格式。以下是两种高效的实现方法:
方法一:使用Awk脚本(适合命令行环境)
Awk擅长处理这类需要上下文关联的文本转换,脚本逻辑如下:
BEGIN { FS = "\";;\"" # 设定字段分隔符为";;" OFS = " " # 输出用空格分隔字段 } # 捕获日期行并转换格式:DD/MM/YYYY → YYYY-MM-DD /^"[0-9]{2}\/[0-9]{2}\/[0-9]{4}";;$/ { split(substr($0,2,10), parts, "/") current_date = parts[3] "-" parts[2] "-" parts[1] next } # 捕获时间+功率行,输出合并后的结果 /^"[0-9]{2}:[0-9]{2}:[0-9]{2}";;[0-9]+$/ { time = substr($0,2,8) power = substr($0, 14) print current_date, time, power }
使用步骤:
- 将上述脚本保存为
convert.awk - 在终端执行命令:
awk -f convert.awk input.csv > output.txt
方法二:使用Python脚本(适合通用编程环境)
如果不熟悉Awk,Python的正则匹配可以更直观地处理:
import re current_date = "" output = [] # 读取原始文件 with open("input.csv", "r", encoding="utf-8") as infile: for line in infile: line = line.strip() if not line: continue # 匹配日期行 date_pattern = re.match(r'"(\d{2}/\d{2}/\d{4})";;', line) if date_pattern: dd, mm, yyyy = date_pattern.group(1).split("/") current_date = f"{yyyy}-{mm}-{dd}" continue # 匹配时间和功率行 tp_pattern = re.match(r'"(\d{2}:\d{2}:\d{2})";;(\d+)', line) if tp_pattern and current_date: time = tp_pattern.group(1) power = tp_pattern.group(2) output.append(f"{current_date} {time} {power}") # 写入转换后的文件 with open("output.txt", "w", encoding="utf-8") as outfile: outfile.write("\n".join(output))
使用步骤:
- 将脚本保存为
convert.py - 在终端执行命令:
python convert.py
内容的提问来源于stack exchange,提问作者BenjiBoy
相关产品推荐
相关产品推荐

