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
相关产品推荐
相关产品推荐

