python正则表达式拆分josn
可以使用正则表达式来拆分 JSON 字符串,使其变成易于处理的数据结构。
以下是一些基本的正则表达式来匹配 JSON 中的元素:
1、匹配 JSON 对象:{[^{}]}
- { 和 } 表示匹配左右括号。
- [^{}] 表示匹配除了左右括号之外的任意字符,可以出现 0 次或多次。
2、匹配 JSON 数组:[[^[]]]
- [ 和 ] 表示匹配左右中括号。
- [^[]] 表示匹配除了左右中括号之外的任意字符,可以出现 0 次或多次。
3、匹配 JSON 键值对:\"[^\"]+\"\s\:\s[^\,}]]+
- \"[^\"]+\" 表示匹配键名,即双引号中的任意字符。
- \s\:\s 表示匹配冒号前后的空格。
- [^\,}]]+ 表示匹配键值,即除了逗号、右括号和右中括号之外的任意字符。
以下是使用正则表达式拆分 JSON 字符串的示例代码:
import re import json json_str = '{"name": "Alice", "age": 25, "address": {"city": "New York", "state": "NY"}, "hobbies": ["reading", "traveling"]}' pattern = r'\"\w+\"\s*\:\s*[^\,\}\]]+|\{[^\{\}]*\}|\[[^\[\]]*\]' matches = re.findall(pattern, json_str) result = [json.loads(match) if match.startswith('{') or match.startswith('[') else match for match in matches] print(result)
运行上述代码,将输出拆分后的 JSON 元素列表:
['{"name": "Alice", "age": 25, "address": {"city": "New York", "state": "NY"}, "hobbies": ["reading", "traveling"]}', '"name": "Alice"', '"age": 25', '"address": {"city": "New York", "state": "NY"}', '"hobbies": ["reading", "traveling"]', '{"city": "New York", "state": "NY"}', '"reading"', '"traveling"']
在上述代码中,首先使用正则表达式 pattern 匹配 JSON 字符串中的元素,然后将匹配结果转换为 Python 对象。如果元素是 JSON 对象或数组,则使用 json.loads 方法将其转换为 Python 对象;否则,保留为字符串。最终得到拆分后的 JSON 元素列表。
相关文章