
本文提供一个轻量、可靠且可定期自动执行的 python 解决方案,用于从结构松散的专有文本配置文件中提取关键字段(首标识符 + cycles 值),跳过注释与无 cycles 条目,最终生成标准 csv 文件,适配 power bi、power apps 及 sharepoint 数据集成需求。
本文提供一个轻量、可靠且可定期自动执行的 python 解决方案,用于从结构松散的专有文本配置文件中提取关键字段(首标识符 + cycles 值),跳过注释与无 cycles 条目,最终生成标准 csv 文件,适配 power bi、power apps 及 sharepoint 数据集成需求。
在您的实际工作场景中(Windows 10 锁定环境、已安装 Visual Studio 2022 含 Python 支持、无 Java/额外工具权限),Python 是最务实的选择:它无需管理员权限即可运行,语法简洁,且原生支持 CSV 和正则处理,完美契合您对“可重复、可调度、免安装”的核心诉求。
以下是一个健壮、生产就绪的 Python 脚本,已针对您提供的 ptube 类配置格式优化:
import csv
import re
def parse_config_to_csv(input_path: str, output_path: str):
rows = []
current_item = None
with open(input_path, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
# 忽略空行和注释行(以 // 开头)
if not line or line.startswith('//'):
continue
# 匹配 "ItemName {" 格式(支持含空格或特殊字符的名称,但此处按常规命名假设)
if line.endswith('{'):
# 提取左花括号前的首个非空单词(即 item 名称)
match = re.match(r'^(\S+?)\s*\{', line)
if match:
current_item = match.group(1)
else:
current_item = None # 安全兜底
continue
# 查找 cycles=xxx; 行(允许前后空格、分号可选)
if current_item and 'cycles=' in line:
# 使用正则精准提取等号后、分号(如有)前的数值(支持整数/可能含空格)
cycle_match = re.search(r'cycles\s*=\s*(\d+)\s*;?', line)
if cycle_match:
cycles_value = cycle_match.group(1)
rows.append([current_item, cycles_value])
current_item = None # 防止同一 item 多次匹配 cycles(虽规范中应唯一)
# 写入 CSV(UTF-8-BOM 确保 Excel 正确识别中文/特殊字符)
with open(output_path, 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['Item', 'Cycles']) # 添加表头,提升可读性与 Power BI 兼容性
writer.writerows(rows)
# ✅ 使用示例(请替换为您的实际路径)
if __name__ == '__main__':
parse_config_to_csv('config.txt', 'output.csv')✅ 脚本优势说明:
- 精准识别结构:使用 re.match(r'^(\S+?)\s*\{', line) 安全提取 item 名,避免 split()[0] 在含空格别名时出错;
- 鲁棒性增强:显式跳过注释与空行;正则 cycles\s*=\s*(\d+)\s*;? 可匹配 cycles= 2693452; 或 cycles=577754 等变体;
- 防重机制:匹配到 cycles 后立即清空 current_item,确保每个 item 最多输出一行(符合业务逻辑);
- 生产友好:添加 CSV 表头、UTF-8-BOM 编码(Excel 默认识别)、清晰函数封装,便于后续集成进 Power Automate(通过“运行 PowerShell 脚本”调用 python script.py)或定时任务。
⚠️ 重要注意事项:
立即学习“Python免费学习笔记(深入)”;
- 将原始配置文件保存为 config.txt(UTF-8 编码),并确保路径不含中文或特殊符号(或使用绝对路径);
- 若实际文件中 item 名含空格(如 "Blower 100"),需调整正则为 r'^"([^"]+)"\s*\{' 或 r"^([^{\n]+?)\s*\{",我们可为您定制;
- 对于 48K 行大文件,本脚本内存占用极低(单行处理),通常在 1 秒内完成;
- 首次运行后,您可将 .py 文件与 .txt 输入文件放入同一文件夹,双击运行,或通过 Windows 任务计划程序每日自动执行。
该方案已验证通过您提供的样例数据,输出严格符合预期:
Item,Cycles Blower100,2693452 TU110,577754
您可立即将生成的 output.csv 直接导入 Power BI(“获取数据 → 文本/CSV”),或上传至 SharePoint 文档库后通过 Power Apps 的 CSV 连接器读取——整个链路零第三方依赖,完全符合企业安全策略。










