Словарь в словаре перебирает все значения - PullRequest
0 голосов
/ 24 ноября 2018

Я читаю в файле XML и пытаюсь извлечь из него данные.Мне нужны все экземпляры «Description», у которых есть определенный идентификатор, связанный с типом Description, а затем мне нужно значение или текст описания.

des_id = получает все идентификаторы описания для элемента

des_value = захватывает все значения для этих идентификаторов

словарь des_ids = ассоциирование des_id с значением des_val в словаре

словарь описаний = ассоциирование номера элемента со словарем des_ids

когда я иду на экспорт в .csv, если выглядит как последний номер элемента в данных описания файла xml, перебирает все части в списке.Мне нужны индивидуальные коды описания со значениями для каждого номера элемента в файле.

Показывает фрагмент кода, где я знаю, что все портится, как я задумал.

for part in soup.find_all('Item'):


for x in part.find_all('PartNumber'):

    partNum = x.get_text()

    for description in part.find_all('Description'):
        des_id = description.get('DescriptionCode')  # key
        des_value = description.get_text()  # value

        des_ids[des_id] = des_value

        descriptions[partNum] = [des_ids]

Любая помощь очень ценится!

SAMPLE XML:

<Items>
    <Item MaintenanceType="A">
      <PartNumber>2000207</PartNumber>
      <Descriptions>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="ASC">Here's a sample ASC description for 2000207</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="ASM">2000207 sample ASM description</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="DEF">2000207 Product</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="DES">This is some text for 2000207</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="EXT">Modified text kit for 2000207</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="INV">Invoice desc for 2000207</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="KEY">THE KEY for 2000207</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="SHO">Pretty Short description for 2000207</Description>
      </Descriptions>
    </Item>
    <Item MaintenanceType="A">
      <HazardousMaterialCode>N</HazardousMaterialCode>
      <PartNumber>2000408</PartNumber>
      <Descriptions>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="ASC">Here's a sample ASC description for 2000208</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="ASM">2000208 sample ASM description</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="DEF">2000208 Product</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="DES">This is some text for 2000208</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="EXT">Modified text kit for 2000208</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="INV">Invoice desc for 2000208</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="KEY">THE KEY for 2000208</Description>
        <Description MaintenanceType="A" LanguageCode="EN" DescriptionCode="SHO">Pretty Short description for 2000208</Description
      </Description>
    </Item>
</Items>

Ouput - это 3 колонки csv с PartNum |des_id |des_value

1 Ответ

0 голосов
/ 24 ноября 2018

Вопрос : мне нужны индивидуальные коды описания со значениями для каждого номера элемента в файле.

for part in soup.find_all('Item'):
    for x in part.find_all('PartNumber'):
        partNum = x.get_text()
        print("partNum{}".format(partNum))

        for description in part.find_all('Description'):
            des_id = description.get('DescriptionCode')  # key
            des_value = description.get_text()  # value

            csv_data = {'PartNumber': partNum, 'DescriptionCode': des_id, 'Description': des_value}
            print("\t{}".format(csv_data))

Вывод :

partNum2000207
    {'DescriptionCode': 'ASC', 'PartNumber': '2000207', 'Description': "Here's a sample ASC description for 2000207"}
    {'DescriptionCode': 'ASM', 'PartNumber': '2000207', 'Description': '2000207 sample ASM description'}
    {'DescriptionCode': 'DEF', 'PartNumber': '2000207', 'Description': '2000207 Product'}
... (omitted for brevity)    
partNum2000408
    {'DescriptionCode': 'ASC', 'PartNumber': '2000408', 'Description': "Here's a sample ASC description for 2000208"}
    {'DescriptionCode': 'ASM', 'PartNumber': '2000408', 'Description': '2000208 sample ASM description'}
    {'DescriptionCode': 'DEF', 'PartNumber': '2000408', 'Description': '2000208 Product'}
 ... (omitted for brevity)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...