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

Python实现正则输入与Excel比对并高亮差异的方法咨询

简单实现方案(无复杂依赖,新手能直接跑)

首先修正你现有代码的几个小问题,再补完比对逻辑,全程没有复杂写法:

  • 不要用str当变量名,这是Python内置的字符串类型,用了容易出莫名其妙的bug
  • 你原来写的正则替换规则不对,会误删其他字符,直接把要删的^、.、|、,四个字符放到正则字符集里就行
  • 替换完分隔符之后,你之前注释掉的split()要打开,把长字符串拆成单个待比对的字符串列表,不然没法逐个匹配
  • 读Excel之后不用拿着整个表格比对,把你要比对的那一列内容提出来存成集合就行,查差异速度快,代码也好写

完整可运行代码

把代码里的列名换成你自己Excel里存基准内容的实际列名就能用:

import re
import pandas as pd

# 接收用户输入
raw_input = input("Enter Regex : ")

# 移除指定分隔符,正则里只需要给有特殊含义的.加转义就行
cleaned_content = re.sub(r"[\^.|,]", " ", raw_input)
# 拆分出纯字母数字的条目,自动过滤多余空格
target_list = [item for item in cleaned_content.split() if item]

# 打印处理后的结果
print("处理后待比对内容:", target_list, "\n")

# 加载Excel,⚠️ 把下面的列名换成你自己表格里存比对基准的列名
compare_column = "替换成你的Excel列名"
df = pd.read_excel(r"C:\Users\...\...\...\Spreadsheet_Comparison.xlsx")
# 提取基准值:去空值、全部转字符串避免类型不匹配、转集合去重提速
benchmark_values = set(df[compare_column].dropna().astype(str).tolist())

# 比对输出差异
print("=== 存在差异的内容(输入内容不在Excel基准库中) ===")
for single_item in target_list:
    if single_item not in benchmark_values:
        # 终端黄色高亮,不支持高亮的终端直接删掉前后的\033开头的转义码就行
        print(f"\033[93m>>> 差异项:{single_item}\033[0m")

# 可选:如果需要找Excel里有、输入里没提到的差异,打开下面这段
# print("\n=== 存在差异的内容(Excel有但输入未包含) ===")
# input_values = set(target_list)
# for bench_item in benchmark_values:
#     if bench_item not in input_values:
#         print(f"\033[91m>>> Excel独有项:{bench_item}\033[0m")

几个注意点

  • 要是不知道自己Excel里的列名叫啥,在读到df之后加一行print(df.columns)跑一次,就能看到所有列名,复制过来替换就行
  • 所有比对内容都统一转成了字符串,不会出现Excel里存数字123、输入是字符串"123"就判定为不匹配的问题
  • 如果不需要高亮,直接把打印语句里的\033[93m和\033[0m删掉,正常打印内容就行
  • 现在的替换规则只会删你要求移除的四个分隔符,不会误删字母数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:36:28