在Python中拆分以分号分隔的字符串

7
我希望能够用Python分割一个分号分隔的字符串,以便我可以将每个单独的字符串存储为XML标签之间的文本使用。字符串的值如下所示:
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

非常感谢您的帮助。


你的示例有错误,顺便说一句,我怀疑你不想将child2的内容设置3次。 - pyroscope
哦,谢谢。我的错。我在设置快速示例以展示我想要完成的内容(复制和粘贴)时添加了它们。你是对的,它们应该是child2, child3, child4。 - Mike
3个回答

20

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

这接近我想要的,但是今后脚本中的值可能会从3个日期变为4个或更多或更少。非常感谢您的帖子。 - Mike
1
请修改您的问题,您不能指望我们去猜测事实。另外,对于Python基本列表分割操作,您可以阅读教程... - pyroscope

3

当你有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

您可以将此适应于任何数量的项目,即使您事先不知道项目数量。


这是一个非常有趣的方法。感谢您发布它。这似乎比我的方法更好。我有一个或两个问题。首先,在“caldate”的第一个实例中,如果在与“caldate”相同的层次结构中有一个名为“time”的附加标签,但它不会在任何其他迭代中出现,我该如何构建它?我的XML应该看起来像这样: - Mike
<timeinfo> <mdattim> <sngdate> <caldate>2009年8月26日</caldate> <time>未知</time> </sngdate> <sngdate> <caldate>2009年8月27日</caldate> </sngdate> <sngdate> <caldate>2009年8月29日</caldate> </sngdate>
</mdattim> </timeinfo>
- Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接