我有一个字符串,其中包含某种格式的值(它是 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'
}]
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'}]