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

如何将Python字符串表格转换为嵌套字典?

把管道分隔的字符串表格转成嵌套字典

没问题,我来帮你搞定这个转换!你之前用split没成功,大概率是没处理好表格里的空格、分隔线和空行这些细节,咱们一步步来实现:

完整实现代码

# 你的原始字符串
dbresponse = '''
key | account_guid | activation_code | external_id | location
--------+--------------+-----------------+-------------+-----------
1.1 | null | 1000005-1212 | 1 | 10.0.9.16
1.4 | null | 500000551212 | 5 | 10.0.9.16
1.6 | null | 700000551212 | 7 | 10.0.9.16
1.5 | null | 400000551212 | 4 | 10.0.9.16
1.1992 | null | 157990235555 | exr498680 | 10.0.9.16
1.3 | null | 200000551212 | 2 | 10.0.9.16
1.2052 | null | 423838550909 | exr084213 | 10.0.9.16
1.2152 | null | 563626550909 | exr350970 | 10.0.9.16
1.1534 | null | 835749550909 | exr245191 | 10.0.9.16
1.161 | null | 547489550909 | exr413464 | 10.0.9.16
1.1955 | null | 961459478950 | exr874895 | 10.0.9.16
1.1812 | null | 535999550909 | exr991462 | 10.0.9.16
1.2153 | null | 525874550909 | exr446117 | 10.0.9.16
1.2 | null | 300000551212 | 3 | 10.0.9.16
1.206 | null | 997141550909 | exr987098 | 10.0.9.16
1.101 | null | 870827550909 | exr867333 | 10.0.9.16
1.302 | null | 938271123405 | exr989961 | 10.0.9.16
1.1795 | null | 360276365614 | exr498651 | 10.0.9.16
1.855 | null | 751409654321 | exr130325 | 10.0.9.16
1.1232 | null | 397846550909 | exr557906 | 10.0.9.16
1.8 | null | 800000551111 | 8 | 10.0.9.16
1.2072 | null | 551260550909 | exr531801 | 10.0.9.16
1.9 | null | 900000551111 | 9 | 10.0.9.16
1.2092 | null | 379419235555 | exr993899 | 10.0.9.16
1.2154 | null | 916479555555 | exr465158 | 10.0.9.16
'''

# 第一步:清理并拆分字符串为行
# 去掉空行和每行前后的空格
lines = [line.strip() for line in dbresponse.split('\n') if line.strip()]

# 第二步:提取表头和数据行
# 第一行是表头,拆分后清理每个字段的空格
headers = [col.strip() for col in lines[0].split('|')]
# 跳过第二行的分隔线,从第三行开始是数据
data_rows = lines[2:]

# 第三步:构建嵌套字典
result_dict = {}
for row in data_rows:
    # 拆分每行数据,清理每个值的空格
    row_values = [val.strip() for val in row.split('|')]
    # 第一个值作为外层字典的key
    primary_key = row_values[0]
    # 用表头和对应值配对,生成内层字典
    inner_dict = dict(zip(headers[1:], row_values[1:]))
    # 加入结果字典
    result_dict[primary_key] = inner_dict

# 验证结果(可选)
print(result_dict['1.1'])

关键细节说明

  1. 清理空行和空格:原始字符串开头有换行,每行的字段前后都有空格,所以先用列表推导式过滤空行,再给每行和每个字段做strip()处理,避免得到带空格的无效键值。
  2. 跳过分隔线:表格里的--------+--------------+...这一行是分隔用的,直接跳过就行。
  3. 键值配对:用zip()把表头(从第二个字段开始)和每行的数据值(从第二个开始)配对,快速生成内层字典,比手动逐个赋值高效多了。

可选优化:把字符串null转为Python的None

如果希望表格里的null对应Python的空值,只需要修改拆分数据行的那一行:

row_values = [None if val.strip() == 'null' else val.strip() for val in row.split('|')]

这样转换后的字典里,account_guid的值就会是None而不是字符串'null',更符合Python的编码习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:44:54