You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将金字塔格式文本数据转为补0的二维数组?

如何将金字塔格式的文本数据转换为补0的二维数组?

我来帮你解决这个问题!要把金字塔形的数字文本转换成每行长度一致(缺失位补0)的二维数组,关键步骤是先确定最后一行的元素个数(也就是最终矩阵的列数),再对每一行进行补0处理。以下是具体的实现思路和Python代码:

步骤1:读取文件并确定最大列数

首先我们需要读取文件的所有行,过滤掉空行后,直接取最后一行拆分后的元素个数作为最大列数——这就是我们需要的二维数组的列长度。

# 读取目标txt文件(替换成你的文件名)
with open('pyramid_data.txt', 'r') as file:
    # 读取所有非空行,并去除每行首尾的空白字符
    lines = [line.strip() for line in file if line.strip()]

# 获取最后一行的元素个数,作为二维数组的列数
max_col_count = len(lines[-1].split())

步骤2:构建补0后的二维数组

遍历每一行,将行内的字符串数字转换为整数列表,然后给列表补充0,直到其长度等于我们刚才得到的max_col_count,最后把处理后的列表加入二维数组中。

# 初始化二维数组
result_matrix = []

for line in lines:
    # 将当前行的字符串拆分为数字列表(转换为整数)
    num_list = list(map(int, line.split()))
    # 计算需要补充的0的个数,补0后加入二维数组
    padded_list = num_list + [0] * (max_col_count - len(num_list))
    result_matrix.append(padded_list)

验证结果(按要求格式输出)

如果需要按照你给出的逗号分隔格式打印结果,可以添加这段代码:

for row in result_matrix:
    print(','.join(map(str, row)))

用你提供的示例数据测试的话,输出会是:

5,0,0
10,7,0
1,3,12

额外说明

  • 如果文件中存在空行,代码里的if line.strip()会自动过滤掉,避免影响后续计算。
  • 即使文件只有一行,这段代码也能正常工作(此时max_col_count为1,不会补0)。

内容的提问来源于stack exchange,提问作者abidinberkay

火山引擎 最新活动