开发者

Splitting semicolon separated string in Python

I want to split a semicolon separated string so that I can store eac开发者_JS百科h individual string to be used as text between XML tags using Python. The string value looks like this:

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

They are just dates stored as string values

I want to iterate through each value, store to a variable and call the variable into the following code at the end:

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

Any help is appreciated.


Split returns a list as follows

>>> 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']


child2.text, child3.text, child4.text = three_dates_text.split(';')


When you have variables named child1, child2, child3, and child4, that is a code smell that hints that you that you should be using a list or some other kind of collection.

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

What had been four separate variables becomes a list with four elements. Now you can go about updating the dates in each of the items:

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

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

You can adapt this to work for any number of items, even when you do not know the number of items in advance.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜