如何将字符串转换为对象数组

问题描述 投票:0回答:1

我有一个字符串,其中包含某种格式的值(它是 sql 查询的输出)。字符串格式是这样的:

'enable id \n =============\nf   avc-qwqwq\nt abd-rrtrtr\n f rec-yyuyu \n')

因此,前 2 个值是 sql 的列名,行位于 价值观。因此,我有 2 个提取这些值并将其作为对象传递。因此,我能够获取列表中的值,但无法弄清楚如何将这些值作为对象传递。

我的代码如下所示:

result = ('enable id \n =============\nf   avc-qwqwq\nt abd-rrtrtr\n f rec-yyuyu \n')
n=2
r = result.split('\n')
newlist = r[n:]
print('r', newlist)      //Output : r ['f   avc-qwqwq', 't abd-rrtrtr', ' f rec-yyuyu ', '']

现在,如何制作一个看起来像这样的对象:

[{
 'enable':'f',
 'org':'avc-qwqwq'
},
{
'enable':'f',
 'org':'abd-rrtrtr'
},
{
'enable':'f',
 'org':'rec-yyuyu'
}]
python-3.x python-2.x
1个回答
0
投票
text = ('enable id \n =============\nf   avc-qwqwq\nt abd-rrtrtr\n f rec-yyuyu \n')

# Extract first two rows.
header_str, _, *rows_str = text.splitlines()

# Parse field names from headers' row.
header = header_str.split()

# Create list of objects mapping words to respective field names from header.
objs = [{key: value for key, value in zip(header, row_str.split())} for row_str in rows_str]

print(objs)
# [{'enable': 'f', 'id': 'avc-qwqwq'}, {'enable': 't', 'id': 'abd-rrtrtr'}, {'enable': 'f', 'id': 'rec-yyuyu'}]

这假设您的行值由空格分隔。如果没有,您必须更改

row_str.split()
部分才能从行中提取字段值。


这是 Python 2 兼容版本:

text = ('enable id \n =============\nf   avc-qwqwq\nt abd-rrtrtr\n f rec-yyuyu \n')

iter_lines = iter(text.splitlines())

# Extract first two rows.
header_str = next(iter_lines)
_ = next(iter_lines)
rows_str =list(iter_lines)

# Parse field names from headers' row.
header = header_str.split()

# Create list of objects mapping words to respective field names from header.
objs = [{key: value for key, value in zip(header, row_str.split())} for row_str in rows_str]

print(objs)
# [{'enable': 'f', 'id': 'avc-qwqwq'}, {'enable': 't', 'id': 'abd-rrtrtr'}, {'enable': 'f', 'id': 'rec-yyuyu'}]
© www.soinside.com 2019 - 2024. All rights reserved.