我已经使用pythonsax解析了XML文件bu,并成功地将标记和值存储在dictionary中。我使用defaultdict来存储一些具有相同标记名的嵌套标记的对。例如:
<Actions>
<Action sequenceNumber="1">
<ActionCode/>
<ActionDescription/>
</Action>
<Action sequenceNumber="2">
<ActionCode/>
<ActionDescription/>
</Action>
<Action sequenceNumber="3">
<ActionCode/>
<ActionDescription/>
</Action>
如果它们是空的,那么输出是这样的:
defaultdict(, {u'ActionDescription': [' ', ' ', ' '], u'ActionCode': [' ', ' ', ' ']})
我需要将这些值插入MySQL,所以我将列名和值放在一个字符串中。你知道吗
actionslist_insertstr = "INSERT INTO dbname.Actions ("
actionslist_valuesstr = "VALUES ('"
actionslist = handler.actions
for i, (k, v) in enumerate(actionslist.iteritems()):
actionslist_insertstr += k
actionslist_valuesstr += "/".join(v)
if i < len(actionslist)-1:
actionslist_insertstr += ","
actionslist_valuesstr += "','"
actionslist_insertstr += ")"
actionslist_valuesstr += "')"
INSERT INTO dbname.Actions (ActionDescription,ActionCode) VALUES (' / / ',' / / ')
但我不希望这些值作为一个字符串存储在数据库中。如何使用分隔符将值拆分为行,并根据它们的列名存储它们?我试着分割这些值,但是它们就不再和它们的键有关系了? 如果有人能告诉我如何解决这个问题,我将不胜感激。非常感谢。你知道吗
如果我理解正确,您有一个名为
handler.actions
的数据对象,这现在是一个defaultdict,包含以下项:因为您解析XML的方式。你知道吗
这意味着
handler.actions['ActionDescription'][0]
是sequenceNumber=1
的描述,handler.actions['ActionCode'][0]
是sequenceNumber=1
的代码。你知道吗在上面的列表中,XML文件中的行已变成列。你知道吗
如果我是对的,你有两个选择:
您可以更改解析XML的方式。我确信有一个特性可以让您为每个
<Action>...</Action>
项生成单独的字典。如果是这样的话,你可以按顺序处理它们。可以使用Python^{} 命令将两个(或更多)列表合并在一起。
代码:
作为输出,我得到:
相关问题 更多 >
编程相关推荐