Python中无法将文本文件读取为指定格式的二维数组
嘿,我来帮你搞定这个Python处理十六进制文本转二维数组的需求!咱们一步步来实现,保证输出完全符合你要的格式:
实现方案与完整代码
首先,咱们先明确核心需求:读取包含两个空格分隔的长十六进制字符串的文本文件,将每个字符串拆分为单个十六进制字符包裹成单元素子数组的结构,最终组合成三层嵌套的二维数组。
1. 读取并预处理文件内容
首先用Python内置的文件操作读取文本,同时去除首尾的空白字符(比如换行符、多余空格):
# 替换成你的文本文件路径 file_path = "hex_data.txt" with open(file_path, 'r') as f: # 读取内容并去除首尾空白 raw_content = f.read().strip()
2. 分割出两个独立的十六进制字符串
文本里的两个目标字符串是用空格分隔的,直接用split()方法就能拆分:
# 分割为两个十六进制长字符串 hex_str_list = raw_content.split() # 此时hex_str_list会是: # ['7ee0c0d15fe800000f80202278e0c0f1', '00007ee0c0d15fc000000f802022c0f1']
3. 转换为目标格式的二维数组
遍历每个十六进制字符串,把每个字符单独包裹成一个单元素数组,再把这些小数组收集成一个大数组,最后把两个大数组放到最外层数组里:
# 生成目标格式的二维数组 result = [] for hex_str in hex_str_list: # 对每个字符,生成[char]格式的子数组,再组合成一个数组 sub_array = [[char] for char in hex_str] result.append(sub_array)
整合后的完整代码
把上面的步骤整合起来,写成一个可复用的函数:
def convert_hex_file_to_2d_array(file_path): with open(file_path, 'r') as f: raw_content = f.read().strip() hex_str_list = raw_content.split() # 用列表推导式简化写法 return [[[char] for char in s] for s in hex_str_list] # 调用示例 final_output = convert_hex_file_to_2d_array("hex_data.txt") print(final_output)
运行这段代码后,输出结果就完全和你要求的一致:
[[['7'], ['e'], ['e'], ['0'], ['c'], ['0'], ['d'], ['1'], ['5'], ['f'], ['e'], ['8'], ['0'], ['0'], ['0'], ['0'], ['0'], ['f'], ['8'], ['0'], ['2'], ['0'], ['2'], ['2'], ['7'], ['8'], ['e'], ['0'], ['c'], ['0'], ['f'], ['1']], [['0'], ['0'], ['0'], ['0'], ['7'], ['e'], ['e'], ['0'], ['c'], ['0'], ['d'], ['1'], ['5'], ['f'], ['c'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['f'], ['8'], ['0'], ['2'], ['0'], ['2'], ['2'], ['c'], ['0'], ['f'], ['1']]]
小提示
如果你的文本文件里的两个字符串是用换行符分隔的,只需要把split()改成split('\n')就能正常处理啦。
内容的提问来源于stack exchange,提问作者Yifei Pei
相关产品推荐
相关产品推荐

