У меня есть файл 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">']
Но я не знаю, как взять идентификатор, язык и т.д. Из каждого списка отдельно.
Перенаправлено отсюда:
Как я могу сделать подсписок из списка на основе строк в 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)