如何用Python将行式十六进制数据转为连续编号的参数格式?
问题
现有input.txt文件,内容为随机十六进制数据,格式如下:
20 3h 4f 57 56 37 4a 2d 33 45 10 2a 23 47 4c
需要将其转换为output.txt,格式要求每个十六进制值对应一行hform_paramXX = 值,编号从00开始连续递增,示例如下:
hform_param00 = 20 hform_param01 = 3h hform_param02 = 4f ... hform_param05 = 37 hform_param06 = 4a ... hform_param12 = 23 hform_param13 = 47 hform_param14 = 4c
曾尝试使用Pandas DataFrame,但因输入结构不规则(每行元素数量不同)无法适配,寻求解决方案。
解决方案
不需要用Pandas,直接用Python基础文件操作即可完成,步骤如下:
- 打开
input.txt逐行读取内容 - 将每行内容按空格拆分,过滤掉空字符串(处理换行或多余空格)
- 遍历所有拆分后的十六进制值,按顺序生成带两位编号的目标行
- 将所有目标行写入
output.txt
代码示例
# 初始化编号计数器 count = 0 output_lines = [] # 读取输入文件 with open('input.txt', 'r') as f_in: for line in f_in: # 拆分每行的十六进制值,过滤空内容 hex_values = [val.strip() for val in line.split() if val.strip()] for val in hex_values: # 格式化编号为两位数字,拼接目标行 output_line = f'hform_param{count:02d} = {val}' output_lines.append(output_line) count += 1 # 写入输出文件 with open('output.txt', 'w') as f_out: f_out.write('\n'.join(output_lines))
说明
- 代码会自动处理每行不同长度的情况,无需提前统一格式
count:02d确保编号始终是两位数字(00、01...14)- 过滤空字符串避免处理换行产生的无效内容
内容的提问来源于stack exchange,提问作者Parine
相关产品推荐
相关产品推荐

