XML CSV конвертировать с Python - PullRequest
0 голосов
/ 19 ноября 2011

Я хочу создать программу командной строки, которая, будем надеяться, будет работать как в Windows, так и в Linux.Я хочу использовать Python, так как это мой язык программирования.Цель состоит в том, чтобы заставить программу принять имя файла в качестве аргумента и вывести информацию из файла в другом формате.В этом случае XML -> CSV и CSV -> XML.

Каков наилучший способ сделать это?

Я знаю, что в Python есть парсеры XML и CSV, например библиотеки xml.parsers.expat и csv.Я хочу, чтобы программа была надежной, чтобы она могла выводиться в других форматах, таких как .sql или что-то в этом роде.Будет ли выгодно сначала преобразовать данные в стандартный формат?Нравится JSON?Затем выходной файл может быть преобразован в другие необходимые форматы.

Спасибо.

EDIT ::

<level1 id ='' attr1='' attr2=''>
    <level2 id ='' attr1='' attr2=''>
        <type1 id ='' attr1='' attr2=''>
        </type1>
        <type2 id ='' attr1='' attr2=''>
        </type2>
    </level2>
    <level2 id ='' attr1='' attr2=''>
        <type2 id ='' attr1='' attr2=''>
        </type2>
    </level2>
</level1>

Это формат XML.Обратите внимание на type1 и type2 внутри level2.Теперь, как я должен представлять эту строку построчно в CSV?

EDIT # 2:

Я думаю, этот вопрос сводится к стандартному способу преобразования между древовидной структурой данных и сеткойсостав.Я закончил делать вложенный список в Python, как JSON, но не использовал структуру JSON.Интересно, есть ли вообще хороший алгоритм для этого преобразования?

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Вам было бы лучше конвертировать XML в JSON и обратно.Оба формата поддерживают несколько уровней вложенности.Напротив, CSV подходит для списка строк без дополнительного вложения.

0 голосов
/ 20 ноября 2011

Вы должны просто преобразовать данные в стандартный python dict, а затем из этого в любой формат, который вам нужен.

Конечно, чтобы конвертировать xml в csv, вы должны иметь специально отформатированный xml, например

<root>
    <column1>value</column1>
    <column2>value</column2>
    <column3>value</column3>
</root>
...