Разделение строки, разделенной точкой с запятой, в Python - PullRequest
4 голосов
/ 06 августа 2011

Я хочу разбить строку, разделенную точкой с запятой, чтобы я мог сохранить каждую отдельную строку для использования в качестве текста между тегами XML с помощью Python. Строковое значение выглядит так:

08-26-2009;08-27-2009;08-29-2009

Это просто даты, хранящиеся в виде строковых значений

Я хочу перебрать каждое значение, сохранить переменную и вызвать переменную в конце следующего кода:

for element in iter:
    # Look for a tag called "Timeinfo"
    if element.tag == "timeinfo":
        tree = root.find(".//timeinfo")
        # Clear all tags below "timeinfo"
        tree.clear()
        element.append(ET.Element("mdattim"))
        child1 = ET.SubElement(tree, "sngdate")
        child2 = ET.SubElement(child1, "caldate1")
        child3 = ET.SubElement(child1, "caldate2")
        child4 = ET.SubElement(child1, "caldate3")
        child2.text = FIRST DATE VARIABLE GOES HERE
        child2.text = SECOND DATE VARIABLE GOES HERE
        child2.text = THIRD DATE VARIABLE GOES HERE

Любая помощь приветствуется.

Ответы [ 3 ]

13 голосов
/ 06 августа 2011

Split возвращает список следующим образом

>>> a="08-26-2009;08-27-2009;08-29-2009"
>>> a_split = a.split(';')
>>> a_split
['08-26-2009', '08-27-2009', '08-29-2009']
4 голосов
/ 06 августа 2011
child2.text, child3.text, child4.text = three_dates_text.split(';')
3 голосов
/ 06 августа 2011

Если у вас есть переменные с именами child1, child2, child3 и child4, это запах кода, который намекает вам на то, что вы должны использовать список или какой-либо другой вид коллекции.

children =  [ET.SubElement(tree, "sngdate")]
children += [ET.SubElement(children[0], "caldate%s" % i) for i in xrange(3)]

ЧтоЕсли четыре отдельные переменные становятся списком с четырьмя элементами.Теперь вы можете обновлять даты в каждом из предметов:

dates = "08-26-2009;08-27-2009;08-29-2009"

for i, d in enumerate(dates.split(";")):
    children[i+1].date = d

Вы можете настроить это для работы с любым количеством предметов, даже если вы заранее не знаете количество предметов.

...