Python中读取连续数组格式文件并转为可访问嵌套数组
处理无分隔符连续数组文件为嵌套数组的方案
核心思路
你的文件是多个无分隔的[x,y,z]结构直接拼接而成,split()没法精准拆分每个完整子数组。最实用的方案是用正则表达式匹配每个独立的子数组块,再逐个解析成数组元素——这种方式不用修改原文件的高密度存储格式,同时能高效提取出可直接访问的嵌套数组结构。
实现示例(Python)
假设你的文件内容为[4, 2, 2][8, 2, 3][9, 3, 2],可以用以下代码处理:
import re # 读取文件内容 with open("data.txt", "r") as f: content = f.read() # 匹配固定3个元素的子数组 pattern = re.compile(r'\[(\d+),\s*(\d+),\s*(\d+)\]') matches = pattern.findall(content) # 转换为嵌套整数数组 nested_array = [[int(num) for num in group] for group in matches] # 测试访问元素 print(nested_array[0][0]) # 输出4 print(nested_array[1][2]) # 输出3
如果子数组的元素数量不固定,可改用通用正则匹配:
pattern = re.compile(r'\[([\d,\s]+)\]') nested_array = [] for match in pattern.findall(content): # 拆分并转换子数组内的数字 elements = [int(num.strip()) for num in match.split(',') if num.strip()] nested_array.append(elements)
存储密度相关补充
- 原格式的存储密度确实优于标准JSON(JSON需要额外的数组分隔符、可能存在冗余空格),所以优先保留原格式+正则解析是最优解。
- 如果后续必须兼容通用场景,不得不使用JSON,也可以对JSON做无空格压缩:把标准JSON
[[4,2,2],[8,2,3]]压缩成[[4,2,2],[8,2,3]],体积和你的原格式差距极小,同时还能直接用json.loads()解析,更省心。
内容的提问来源于stack exchange,提问作者SpaceFlier
相关产品推荐
相关产品推荐

