特殊字符间字符串提取:从给定文本中提取id:value格式内容
嘿,我来帮你搞定这个字符串提取的需求!下面给你几种实用的方法,你可以根据自己的场景选:
从类JSON字符串中提取目标内容的方法
方法1:正则表达式匹配
这招直接精准,适合快速提取固定格式的内容。我们用正则匹配每个{}包裹的内部内容:
import re input_str = "[{id1:value1,id2:value2},{id1:value1a,id2:value2a}]" # 匹配所有{}内的内容,非贪婪模式避免匹配过度 matches = re.findall(r'{(.*?)}', input_str) # 输出结果 for item in matches: print(item)
运行后就能得到你要的:
id1:value1,id2:value2 id1:value1a,id2:value2a
方法2:手动字符串处理
如果不想依赖正则,直接对字符串做切片和拆分也能轻松实现:
input_str = "[{id1:value1,id2:value2},{id1:value1a,id2:value2a}]" # 先去掉首尾的方括号 stripped_str = input_str[1:-1] # 按"},{"拆分字符串,得到两个带{}的子串 raw_items = stripped_str.split('},{') # 去掉每个子串首尾的大括号 target_items = [item.strip('{}') for item in raw_items] # 输出结果 for item in target_items: print(item)
这个方法逻辑清晰,适合理解字符串结构的场景。
方法3:借助JSON解析(更稳妥)
原字符串是类JSON格式,只是键没有加引号。我们先补全引号转成合法JSON,再解析后格式化,这种方法对复杂内容兼容性更好:
import json import re input_str = "[{id1:value1,id2:value2},{id1:value1a,id2:value2a}]" # 给所有键加上双引号,转成合法JSON格式 valid_json_str = re.sub(r'(\w+):', r'"\1":', input_str) # 解析JSON为Python列表 data_list = json.loads(valid_json_str) # 把每个字典转成你要的字符串格式 target_items = [','.join([f"{key}:{val}" for key, val in obj.items()]) for obj in data_list] # 输出结果 for item in target_items: print(item)
要是你的字符串后续可能出现特殊字符(比如值里有逗号、引号),这种方法会比前两种更可靠。
内容的提问来源于stack exchange,提问作者Santhosh N
相关产品推荐
相关产品推荐

