如何将SQL查询输出字符串转为对象数组(兼容Python2/3)
解决方案
以下是兼容Python 2和Python 3的实现代码,能将SQL输出字符串转换为目标格式的对象数组:
import json # 原始SQL输出字符串,用三引号处理多行内容 result = '''enable id ============= f avc-qwqwq t abd-rrtrtr f rec-yyuyu ''' # 1. 分割行并过滤空行和无意义的空内容 lines = [line.strip() for line in result.split('\n') if line.strip()] # 2. 定义目标字段名(将原始的'id'映射为'org') target_keys = ['enable', 'org'] # 3. 处理数据行(跳过列名行和分隔线行) data_rows = lines[2:] # 4. 生成目标对象数组 result_list = [] for row in data_rows: # 按任意空白符分割字段,同时去除每个字段的前后空白 values = [val.strip() for val in row.split()] # 字段与目标键配对生成字典 result_list.append(dict(zip(target_keys, values))) # 输出格式化后的JSON(与目标格式一致) print(json.dumps(result_list, indent=2))
代码说明
- 行处理:用列表推导式过滤掉空行和前后空白,避免后续处理无效内容;
- 字段映射:将原始SQL列名
id映射为目标格式的org,匹配需求; - 数据分割:使用
split()默认按任意空白符分割行内容,兼容不同数量的空格分隔; - 兼容版本:所有用到的
strip()、split()、dict(zip())、json.dumps()方法在Python 2和3中行为一致,无需额外兼容处理。
输出结果
运行代码后会输出与目标完全一致的JSON格式:
[ { "enable": "f", "org": "avc-qwqwq" }, { "enable": "t", "org": "abd-rrtrtr" }, { "enable": "f", "org": "rec-yyuyu" } ]
内容的提问来源于stack exchange,提问作者pranami
相关产品推荐
相关产品推荐

