【发布时间】:2021-12-30 23:01:31
【问题描述】:
我正在逐行解析 csv。一行中有 3 列需要将每列拆分为列表,然后在列表中组合成字典。每列内的数据由两个管道分隔:||
传入数据:
按钮,点击,id
选择1 ||选择2 ||选择 3,正确 ||错误 ||错误,选择 1 id||选择 2 id ||选择 3 id
- 数据已通过 csv DiskReader 导入,脚本中的每一行都是有序字典,如下所示:
('buttons','choice 1 || choice 2 || choice 3'),
('clicked', 'TRUE || FALSE || FALSE'),
('id','choice 1 id|| choice 2 id || choice 3 id'),
编辑添加:
input 有很多不应该包含的列。此步骤仅包含这 3 列。
即正在处理的行的示例输出
print(data[0])
OrderedDict([
('pathId', 'test_id'),
('stepId', ''),
('nodeId', 'ROOT'),
('responseId', 'test_response'),
('responseUuid', ''),
('type', ''),
('language', 'en-US'),
('buttons','choice 1 || choice 2 || choice 3'),
('clicked', 'TRUE || FALSE || FALSE'),
('id','choice 1 id|| choice 2 id || choice 3 id'),
('state', 'resolved'),
('flags', 'accepted')])
实际的列数是动态的且不可预测的。但在包含 buttons、clicked 和 id 值的行中将需要此处理。
END EDIT
预期输出需要:
buttonChoices =
[
{
"button": "choice 1",
"clicked": true,
"id": "choice 1 id"
},
{
"button": "choice 2",
"clicked": false,
"id": "choice 2 id"
},
{
"button": "choice 3",
"clicked": false,
"id": "choice 3 id"
}
]
- 我事先不知道列表中有多少个值,但是这 3 列中的值是相同的
现在我有:
for row in data:
buttonChoices = []
buttonText = row['button'].split('||')
buttonClicked = row['clicked'].split('||')
buttonId = row['id'].split('||')
但卡住了下一步
【问题讨论】:
-
为什么您的 CSV 看起来像这样?为什么每个按钮点击事件没有单独的一行数据?
-
就是这样...所有相关记录都排成一行