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

Python:判断字符串中花括号内数据是否一致的实现求助

解决方法:判断字符串中所有{}内的内容是否一致

嘿,作为Python新手碰到这种字符串解析的需求完全不用慌,我给你整理了一套简单易懂的方案,一步步来就行!

第一步:提取所有{}里的内容

我们可以用Python的re模块(正则表达式模块)来快速提取所有被{}包裹的内容。正则表达式r'\{(.*?)\}'就能精准匹配到每一对{}之间的文本,其中:

  • \{ 和 \}:匹配字面量的{和}(因为这两个字符在正则里有特殊含义,所以要加反斜杠转义)
  • (.*?):非贪婪模式匹配任意字符,确保我们只提取到一对{}之间的内容,不会把多个{}的内容连在一起

第二步:检查所有提取的内容是否一致

拿到所有提取的内容后,我们只需要判断这些内容是不是全部相同就行。最简单的方法是把这些内容放到一个集合里(集合会自动去重),如果集合的长度是1,就说明所有内容都一致;如果长度大于1,就说明有不同的内容。另外还要考虑没有匹配到任何{}的情况,这种时候可以根据你的需求返回True或者给出提示。

完整代码示例

import re

def check_braces_content_consistent(input_str):
    # 提取所有{}内的内容
    matched_contents = re.findall(r'\{(.*?)\}', input_str)
    
    # 处理没有匹配到内容的情况
    if not matched_contents:
        print("字符串中没有找到{}包裹的内容")
        return True  # 或者根据你的需求返回False
    
    # 检查所有内容是否一致
    # 方法1:用集合去重,判断长度是否为1
    if len(set(matched_contents)) == 1:
        print(f"所有{}内的内容都是一致的:{matched_contents[0]}")
        return True
    else:
        print("{}内的内容存在不一致的情况,具体内容为:{}".format("{}", matched_contents))
        return False

# 测试你的示例字符串
test_string = "stack-{data}-XYZ-ABC-DEF- {data}-DAB24-GOOD45-XYA-BYCS-{data}-"
check_braces_content_consistent(test_string)

测试结果说明

运行上面的代码,针对你的示例字符串,会输出:

所有{}内的内容都是一致的:data

如果把示例字符串改成"stack-{data}-XYZ-{test}-DEF",运行后会输出:

{}内的内容存在不一致的情况,具体内容为:['data', 'test']

这样是不是很清晰?如果还有其他特殊情况(比如{}不配对、空格问题),可以随时调整正则或者判断逻辑哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:11:43