Как я могу построить таблицу sqlite из этого файла XML / TXT с использованием Python?

0

У меня есть файл xml/txt:

<text id="32a45" language="ENG" date="2017-01-01" time="11:00" timezone="Eastern">

<s id="1">
foo
bar
</s>
<d>
11235
</d>

<text id="32a47" language="ENG" date="2017-01-05" time="1:00" timezone="Central">

<s id="2">
foo
bar
</s>
<d>
11235
</d>

<text id="32a48" language="ENG" date="2017-01-07" time="3:00" timezone="Pacific">

<s id="3">
foo
bar
</s>
<d>
11235
</d>

Я хочу построить таблицу sqlite следующим образом, используя python:

id  language    date        timezone    s           d

32a45   ENG     2017-01-01  Eastern     foo bar     11235
32a47   ENG     2017-01-05  Central     baz qux     11235
32a48   ENG     2017-01-07  Pacific     foo bar     11235

Любая идея, как я могу это сделать? Я не могу использовать модуль xmltree, потому что теги xml в исходном файле перепутаны. Я очень благодарен за помощь. Благодарю.

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

['<text id="32a45" language="ENG" date="2017-01-01" time="11:00" timezone="Eastern">', '<text id="32a47" language="ENG" date="2017-01-05" time="1:00" timezone="Central">', '<text id="32a48" language="ENG" date="2017-01-07" time="3:00" timezone="Pacific">']

Но я не знаю, как взять идентификатор, язык и т.д. Из каждого списка отдельно.

  • 0
    Есть какая-то конкретная причина, почему вы помечаете R в этом?
  • 0
    Да. Если в R есть встроенная библиотека для этого, это также подойдет и мне. Я знаю, что в R. есть пакет RSQlite. Однако раньше я его не использовал. При этом я не думаю, что R может быть более полезным, чем Python. Просто оставив опцию открытой.
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Перенаправлено отсюда:

Как я могу сделать подсписок из списка на основе строк в python?

import xml.etree.ElementTree as ET
import pandas as pd

strings = ['<text id="32a45" language="ENG" date="2017-01-01" time="11:00" timezone="Eastern">',
'<text id="32a47" language="ENG" date="2017-01-05" time="1:00" timezone="Central">',
'<text id="32a48" language="ENG" date="2017-01-07" time="3:00" timezone="Pacific">']

cols = ["id","language","date","time","timezone"]
data = [[ET.fromstring(string+"</text>").get(col) for col in cols] for string in strings]    
df = pd.DataFrame(data,columns=cols)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню