You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python或Excel公式拆分Excel单列编译警告数据为多列

编译警告行拆分方案

Python 实现

可以通过正则表达式或字符串分割两种方式实现,以下是具体代码:

正则表达式方式

import re

# 示例警告行
warning_line = r"D:\SVN_EVCU2_Compiler\EVCU_2_0_Project_APP\BUILD/../SSW_TC39X/src/Ifx_Ssw_Tc0.c:121:51: warning: no previous prototype for 'Jump_To_App' [-Wmissing-prototypes]"

# 匹配规则:捕获基础路径、相对文件路径、警告详情
pattern = r"(.*BUILD)/\.\./(.*?):(.*)"
match_result = re.match(pattern, warning_line)

if match_result:
    base_col = f"({match_result.group(1)}/.)"
    file_col = f"({match_result.group(2)})"
    warning_col = f"({match_result.group(3)})"
    # 按制表符分隔输出,可直接复制到Excel
    print(f"{base_col}\t{file_col}\t{warning_col}")

字符串分割方式

warning_line = r"D:\SVN_EVCU2_Compiler\EVCU_2_0_Project_APP\BUILD/../SSW_TC39X/src/Ifx_Ssw_Tc0.c:121:51: warning: no previous prototype for 'Jump_To_App' [-Wmissing-prototypes]"

# 定位BUILD/../的位置
split_marker = "BUILD/../"
marker_pos = warning_line.find(split_marker)

if marker_pos != -1:
    # 提取基础路径列
    base_path = f"({warning_line[:marker_pos + len('BUILD')]}/.)"
    # 提取剩余部分
    rest_content = warning_line[marker_pos + len(split_marker):]
    # 分割文件路径和警告详情
    colon_pos = rest_content.find(":")
    file_path = f"({rest_content[:colon_pos]})"
    warning_detail = f"({rest_content[colon_pos+1:]})"
    # 输出结果
    print(f"{base_path}\t{file_path}\t{warning_detail}")

Excel 公式实现

假设原始警告数据在单元格A1,分别在B1、C1、D1输入以下公式:

基础路径列(B1)

=CONCATENATE("(",LEFT(A1,FIND("BUILD/../",A1)+4),"/.)")

相对文件路径列(C1)

=CONCATENATE("(",MID(A1,FIND("BUILD/../",A1)+9,FIND(":",A1,FIND("BUILD/../",A1)+9)-FIND("BUILD/../",A1)-9),")")

警告详情列(D1)

=CONCATENATE("(",RIGHT(A1,LEN(A1)-FIND(":",A1,FIND("BUILD/../",A1)+9)),")")

公式说明:

  • 利用FIND定位BUILD/../的位置,拆分出基础路径的前缀;
  • 通过二次FIND找到文件路径后的第一个冒号,分割出相对文件路径和警告内容;
  • 用CONCATENATE给各部分添加括号包裹。

内容的提问来源于stack exchange,提问作者tushar nampalliwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:45:58