Member 13349179 Ответов: 2

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


У меня есть такой список:
['<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">']

Из этого я хочу сделать подсписки типа:
id = ["32a45", "32a47", "32a48"]
date=["2017-01-01", "2017-01-05", "2017-01-07"]

Как я могу это сделать?

Спасибо.

Что я уже пробовал:

<pre><pre lang="Python">myList = []
for l in myList:
    a = l.split()
    print(a)
    idn += a[1]
    language += a[2]
    date += a[3]
    time += a[4]
    timezone += a[5]

2 Ответов

Рейтинг:
1

Richard MacCutchan

Вам нужно разбить каждую строку на маркеры, разделенные пробелами. Затем вам нужно разделить каждый токен на '=' Затем у вас есть ключевое слово и связанное с ним значение, которое вы можете использовать для создания новых списков.


Рейтинг:
0

Thomas Daniels

Ваши входные данные на самом деле являются XML-тегами без закрывающего тега. Итак, что вы можете сделать, так это использовать xml.etree.ElementTree чтобы разобрать (вашу строку + </text>) , а затем использовать атрибуты разбираемого тега:

import xml.etree.ElementTree

inputs = ['<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">']

ids = []
dates = []
# more arrays if you want

for l in inputs:
    element = xml.etree.ElementTree.fromstring(l + "</text>")
    attributes = element.attrib
    ids.append(attributes["id"])
    dates.append(attributes["date"])
    # ... and so on, if you have more arrays

print(ids)
print(dates)