python - 将字符串表转换为字典
问题描述
我在字符串中有一个表,我想将其转换为字典字典。我该怎么做?
我试图通过拆分将字符串转换为列表,但我没有得到它。
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'}}.....}
解决方案
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. 将行拆分为列
推荐阅读
- flutter - 不支持的操作:无法在 Hive 中添加到固定长度列表
- django - 在我的数据库中对项目进行分组和计数
- python - RelaxedOneHotCategorical 的梯度似乎为零
- python - PyQt QMediaPlayer 使用一些(不是全部)视频文件进行帧转发
- python - 使用 python pytesseract 将 PDF 转换为文本
- python - TypeError: cannot unpack non-iterable int object 。当我尝试参加 x 的 len 时,它给了我一个错误消息说它是 float,现在它是 int?
- python - 使用 Pandas 从列中平均选择数据
- nuxt.js - 我可以在 nuxt 内容的 frontmatter 字段中呈现标记吗?
- google-chrome-extension - 任何人都可以帮助我使用谷歌扩展图标吗?
- python - 无法更改 np 元素的值