首页 > 解决方案 > 将字符串表转换为字典

问题描述

我在字符串中有一个表,我想将其转换为字典字典。我该怎么做?

我试图通过拆分将字符串转换为列表,但我没有得到它。

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
'''

这是一个作为表格的 python 字符串。我想要这样的输出:

{{'1.1' : {'activation_code': '1000005-1212', 'account_guid': 'null',
  'external_id': '1', 'location': '10.0.9.16'}},
{'1.4.' : {'activation_code': '500000551212', 'account_guid': 'null',
  'external_id': '5', 'location': '10.0.9.16'}}.....}

标签: pythonstringdictionaryresponse

解决方案


 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
'''

    split_str = dbResponse.split('\n')
    split_str = [s for s in split_str if len(s) > 0]
    strip_str = lambda x: x.strip()
    column = list(map(strip_str,split_str[0].split('|')))
    outresult = [] 
    for clm in split_str[2:]:
        outdict = {}
        out = {}
        splited_clm = clm.split("|")
        i = 1
        for c in column[1:]:
            out[c] = splited_clm[i]
            i = i + 1
        outdict[splited_clm[0]] = out
        outresult.append(outdict)

输出

[{'    1.1 ': {'account_guid': '         null ',
   'activation_code': '    1000005-1212 ',
   'external_id': '           1 ',
   'location': ' 10.0.9.16'}},
 {'    1.4 ': {'account_guid': '         null ',
   'activation_code': '    500000551212 ',
   'external_id': '           5 ',
   'location': ' 10.0.9.16'}},
 {'    1.6 ': {'account_guid': '         null ',
   'activation_code': '    700000551212 ',
   'external_id': '           7 ',
   'location': ' 10.0.9.16'}},
 {'    1.5 ': {'account_guid': '         null ',
   'activation_code': '    400000551212 ',
   'external_id': '           4 ',
   'location': ' 10.0.9.16'}},
 {' 1.1992 ': {'account_guid': '         null ',
   'activation_code': '    157990235555 ',
   'external_id': '   exr498680 ',
   'location': ' 10.0.9.16'}}]

提示:1. 将字符串拆分为行 2. 将行拆分为列


推荐阅读