You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让数组内的API响应呈现行列表格格式?

如何将数组内带格式控制符的API响应转为行列表格格式?

问题描述

API返回的原始响应是如下表格形式的文本:

AccountId Requests
1         3
2         67
3         50
          10
-- 10 batches, 10 datasources

但将该响应存入数组后,变成了包含ANSI控制字符和换行符的单个字符串元素:

["\e[1mAccountId    requests    \n\e[m1    3    \n2    67    \n3    50    \n    9.   \n-- 10 batches, 10 datasource\n"]   

需要把这个数组内的字符串重新处理成清晰的行列表格形式。

解决步骤

1. 提取并清理字符串

先从数组中取出目标字符串,然后移除所有ANSI格式控制字符(比如\e[1m、\e[m这类终端高亮标记),避免干扰后续解析。

示例代码(JavaScript):

const rawStr = yourArray[0];
// 移除ANSI控制字符
const cleanedStr = rawStr.replace(/\e\[[0-9;]*m/g, '');

示例代码(Python):

import re
raw_str = your_array[0]
# 移除ANSI控制字符
cleaned_str = re.sub(r'\x1b\[[0-9;]*m', '', raw_str)

2. 分割行并过滤无效内容

将清理后的字符串按换行符分割成单行数组,然后过滤掉空行和末尾的统计注释行:

示例代码(JavaScript):

const lines = cleanedStr.split('\n').filter(line => line.trim() !== '' && !line.startsWith('--'));

示例代码(Python):

lines = [line.strip() for line in cleaned_str.split('\n') if line.strip() and not line.startswith('--')]

3. 解析每行数据为结构化格式

处理表头和数据行,把每行内容映射为键值对或对象,注意处理AccountId缺失的情况:

示例代码(JavaScript):

const [headerLine, ...dataLines] = lines;
// 分割表头(多个空格分隔)
const headers = headerLine.split(/\s+/).filter(h => h);
// 解析数据行
const tableData = dataLines.map(line => {
  const parts = line.split(/\s+/).filter(p => p);
  // 处理AccountId为空的情况
  const accountId = parts.length === 1 ? null : parts[0];
  const requests = parts.length === 1 ? parts[0] : parts[1];
  return {
    [headers[0]]: accountId,
    [headers[1]]: requests
  };
});

示例代码(Python):

header_line = lines[0]
headers = [h for h in header_line.split() if h]
table_data = []
for line in lines[1:]:
    parts = [p for p in line.split() if p]
    # 处理AccountId为空的情况
    account_id = parts[0] if len(parts) == 2 else None
    requests = parts[1] if len(parts) == 2 else parts[0]
    table_data.append({
        headers[0]: account_id,
        headers[1]: requests
    })

4. 生成行列表格输出

如果需要输出可视化的表格文本,可以遍历结构化数据重新拼接:

示例代码(JavaScript):

// 先打印表头
console.log(headers.join('\t'));
// 打印数据行
tableData.forEach(row => {
  console.log(`${row.AccountId || ''}\t${row.Requests}`);
});

示例代码(Python):

# 打印表头
print('\t'.join(headers))
# 打印数据行
for row in table_data:
    print(f"{row['AccountId'] or ''}\t{row['requests']}")

最终输出的行列表格会和原始API响应格式一致,或者更规整的制表符分隔形式。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:24:28