2011-08-05 117 views
2

我想分割一個以分號分隔的字符串,以便我可以將每個單獨的字符串存儲爲使用Python的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 

任何幫助表示讚賞。

+0

你的示例有一個錯誤btw,我懷疑你想設置child2的內容​​3次。 – pyroscope

+0

哦,謝謝。我的錯。我在創建一個我正在嘗試完成(複製和粘貼)的快速示例時添加了這些內容。你是對的,他們應該是child2,child3,child4。 – Mike

回答

9

分割如下

>>> 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'] 
2
child2.text, child3.text, child4.text = three_dates_text.split(';') 
+0

這是接近我想要的,但前進腳本中的值從3日期到4或更多或更少不等。謝謝你的帖子。 – Mike

+1

然後請修改你的問題,你不能指望我們能夠預測事實。此外,拼接列表是基本的Python,你可以閱讀教程... – pyroscope

2

當你有一個名爲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 

你能適應這對於任何數量的項目的工作,即使你不提前知道項目的數量。

+0

這是一個非常有趣的方法。感謝您發佈它。這似乎是比我更好的方法。我有一個問題或2.首先,如果在「caldate」的第一個實例中,在與「caldate」相同的層次上將會有一個名爲「time」的附加標記,但它不會發生任何附加迭代,那麼將如何我建立在?我的XML應該是這樣的: – Mike

+0

2009年8月26日 2009年8月27日 2009年8月29日 Mike

+0

對不起,雖然我可以在評論中格式化XML標籤。顯然不是... – Mike