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.
精彩评论