Преобразование XML-данных в фрейм данных

Как я могу преобразовать данные XML в фрейм данных с форматом, указанным ниже.

<start>
    <main index = '1', sub = 'english' >
        <name value = '1', text = 'hi this is xxx' />
        <name value = '2', text = 'isnt this funny' />
    </main>
    <main index = '2', sub = 'french'>
        <name value = '1', text = 'Comment vas-tu' />
        <name value = '2', text = 'sil vous plaît résoudre ce'>
    </main>
</start>

Ожидаемый DataFrame:

mainindex           namevalue           text
A                       1               hi this is xxx
A                       2               isnt this funny
B                       1               Comment vas-tu
B                       2               sil vous plaît résoudre ce

Как ты пробовал?

Andersson 09.01.2019 11:43

Что вы пробовали до сих пор?

Letsintegreat 09.01.2019 11:51
beautifulsoap может быть?
DirtyBit 09.01.2019 11:53

на самом деле я новичок в использовании xml в python

pylearner 09.01.2019 11:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

нравится BeautifulSoup?

data = """<start>
    <main index = '1', sub = 'english' >
        <name value = '1', text = 'hi this is xxx' />
        <name value = '2', text = 'isnt this funny' />
    </main>
    <main index = '2', sub = 'french'>
        <name value = '1', text = 'Comment vas-tu' />
        <name value = '2', text = 'sil vous plaît résoudre ce'>
    </main>
</start>"""

data = BeautifulSoup(data)

headers = ['mainIndex','nameValue','text']

dataframe = pd.DataFrame(columns=headers)
pos = 0
i = 0
for m in data.find_all('main'):
    for name in m.find_all('name'):
        d = []
        d.append(chr(ord('A')+i))
        d.append(name.get('value'))
        d.append(name.get('text'))

        dataframe.loc[pos] = d
        pos+=1
    i+=1    

print(dataframe)

  mainIndex nameValue                        text
0         A         1              hi this is xxx
1         A         2             isnt this funny
2         B         1              Comment vas-tu
3         B         2  sil vous plaît résoudre ce

Другой способ:

saveFileName = 'yourOwnFileName.txt'

def main():
    mainindex = None

    with open('yourOwnXml.xml', 'r') as f_read:
        with open(saveFileName, 'w') as f_write:
            for line in f_read.readlines():
                if '<main index' in line.strip():
                    mainindex = line.split('\'')[1]
                if '<name value' in line.strip():
                    name_value = line.split('\'')[1]
                    text = line.split('\'')[3]
                    f_write.write('{mainindex} {namevalue} {text}\n'.format(mainindex=mainindex, namevalue=name_value, text=text))

if __name__ == '__main__':
    main()

вывод в yourOwnFileName.txt должен быть:

1 1 hi this is xxx
1 2 isnt this funny
2 1 Comment vas-tu
2 2 sil vous plaît résoudre ce

Другие вопросы по теме