Python导入JSON数据时如何保留含空格的键值对属性名
解决带空格属性名的JSON数据提取问题
问题描述
从JSON文件的payload.blob.rawLines字段提取数据时,部分属性名包含空格(如Property1_word1 Property1_word2),原有代码通过split(' ')拆分后仅保留属性名的第一个单词,无法完整获取带空格的属性名。
JSON示例片段
{"payload": {"blob": {"rawLines": [" 5.00000 Property1_word1 Property1_word2 ", ...]}}}
原有代码问题
原有代码中e.split(' ')[1]仅取拆分后的第二个元素,无法覆盖带空格的属性名:
as_dict = {e.split(' ')[0]: e.split(' ')[1] for e in trimmed}
解决方案
使用split(maxsplit=1)替代普通split(' '),该参数会限制仅拆分一次,将字符串分为数值部分和完整属性名部分:
import json import pandas as pd # 读取JSON文件 with open("yourJson.json", "r") as f: data = json.load(f) # 提取目标数据行 to_extract = data["payload"]["blob"]["rawLines"] # 处理每行数据:去除首尾空格后,仅拆分一次 processed_lines = [] for line in to_extract: stripped_line = line.strip() # 跳过空行(如果有的话) if not stripped_line: continue # 仅拆分一次,分割为数值和属性名 value_part, property_part = stripped_line.split(maxsplit=1) # 合并属性名内的多余连续空格(按需保留) clean_property = ' '.join(property_part.split()) processed_lines.append((value_part, clean_property)) # 转换为DataFrame df = pd.DataFrame(processed_lines, columns=['Value', 'Property'])
关键说明
split(maxsplit=1):确保只在第一个空格处拆分,完整保留属性名的所有内容- 属性名空格处理:如果属性名内部存在多个连续空格,用
' '.join(property_part.split())合并为单个空格,保证格式整洁 with语句读取文件:替代手动close(),更安全规范
内容的提问来源于stack exchange,提问作者Ant
相关产品推荐
相关产品推荐

