【问题标题】:Use Python reserved words in an XML File在 XML 文件中使用 Python 保留字
【发布时间】:2025-12-27 11:25:06
【问题描述】:

我目前正在尝试使用 python 的 (3.6) xml.etree.ElementTree 命令来编写一个 xml 文件。我需要编写的一些元素和子元素必须有“id”和“map”字段,它们是python 的保留字。

我的问题包含在以下代码行中:

ET.SubElement(messages,'trigger',thing='1',bob='a', max='5')

但是“max”是一个函数,我不能使用它。有没有我可以放在那里的角色让我按照自己的意愿写这个字段?还是某种已知的解决方法?

编辑:我知道 '_' 会阻止 python 处理这个单词,但不幸的是,这个下划线会出现在我的文件中......所以我想看看是否有一个 'invisible' 选项文件我稍后会写。

非常感谢!

【问题讨论】:

  • 试试ET.SubElement(messages,'trigger', {'thing': '1', 'bob': 'a', 'max': '5'}).

标签: python xml reserved-words


【解决方案1】:

Python函数在关键字表达式的左侧是没有问题的:

>>> def abc(**kwargs):
    print kwargs
>>> abc(id=2)
{'id': 2}
>>> 

id、map、int、float、str、repr等都是内置符号,不是保留字。您可以像使用任何其他字母一样使用它们,但为其分配另一个值会替换内置符号:

>>> int(2.5)
2
>>> int = "5"
>>> int(2.5)
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    int(2.5)
TypeError: 'str' object is not callable

请注意第一行是如何完全合法的,但如果您有像 pycharm 这样的良好 IDE,则会触发警告。

如果要向函数发送实际的保留字,例如 print、None、yield 或 try,可以使用双星 ** 将字典转换为关键字参数,例如:

>>> abc(**{"print":2, "None":3})
{'print': 2, 'None': 3}

我希望这能回答你的问题!

【讨论】: