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

Python中如何对比编码不同的两个字符串 解决相等判断返回False问题

问题根因

两个字符串的实际内容存在两处肉眼不可观测的差异:

  • 从UTF-8编码txt提取的application_name末尾带未处理的换行符\n,从编码结果b'MicrosoftEdge\n'可直接观测到
  • 窗口接口获取的curr_application中间包含肉眼不可见的零宽空格(Unicode码位U+200B),对应字节序列为\xe2\x80\x8b,因此实际内容和视觉显示结果有偏差
解决方法

针对性修复(仅处理当前场景)

分别对两个字符串做定向清理即可:

  1. 移除application_name末尾的换行符:
application_name = application_name.rstrip('\n')
  1. 移除curr_application中的零宽空格:
curr_application = curr_application.replace('\u200b', '')

完成上述处理后再执行相等判断,就会返回True。

通用鲁棒方案(适配更多场景)

如果后续需要处理更多不同应用的窗口名称,可能还会遇到其他类型的不可见控制字符,建议统一做字符串清洗后再比较:

import re

def clean_app_name(raw_str):
    # 移除首尾空白、换行符
    cleaned = raw_str.strip()
    # 过滤所有零宽字符、常用不可见控制字符
    cleaned = re.sub(r'[\u200b-\u200f\uFEFF\u202a-\u202e\n\r\t]', '', cleaned)
    # 移除所有空格(和原有处理逻辑保持一致)
    cleaned = cleaned.replace(' ', '')
    return cleaned

# 清洗后再比较
print(clean_app_name(curr_application) == clean_app_name(application_name))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:54:00