Python-使用嵌套csv中的键作为主键

时间:2018-11-05 19:41:45

标签: python json csv

对措辞不佳的标题表示歉意。

基本上,我有一个csv文件,其中的行如下所示:

<ReferenceField source="item_id" reference="list" linkType={false}>
    <SubReference source="id_to_reference_from_list" reference="second_list">
        <TextField source="name" />
    </SubReference>
</ReferenceField>

第一个嵌套列表的键名是'board',第二个是'status'。我正在尝试对此进行格式化,以便使用嵌套的“名称”键代替“板”和“状态”。我希望它的格式如下:

<TextBox 
    Text="{Binding MyBinding, Mode=OneWay}">
    <TextBox.Style>
        <Style TargetType="StackPanel" BasedOn="{StaticResource TextBoxStyle1}">
            <Setter Property="Visibility" Value="Visible"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=thisView, Path=DataContext.MyPropertyInViewModel}" Value="3">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

我对此完全迷失了。任何帮助将不胜感激。

以下是我的代码,用于从get请求中检索.json数据并将其转换为.csv:

1234567, Install X Software on Y Machine, ServiceTicket,"{'id': 47, 'name': 'SERVICE BOARD', '_info': {'board_href': 'https://MY-URl'}}","{'id': 897, 'name': 'Completed', '_info': {'status_href': 'https://MY-URl'}}...

2 个答案:

答案 0 :(得分:1)

这不是很好的解决方案,但应该可以。另外,您可以查看itemgeter

with open('data.csv', 'w') as f:
    writer = csv.DictWriter(f, fieldnames=('foo1', 'foo2'))
    writer.writeheader()
    for i in data:
        record = []
        for item in i.values():
            if isinstance(item, dict):
                record.append(item['name'])
            else:
                record.append(item)
        writer.writerow(record)

答案 1 :(得分:0)

在将json文件转换为csv之前,将其变平,然后删除不需要的密钥,从而获得了所需的格式。这不是一个理想的答案,但是可以。