【发布时间】:2026-02-13 02:40:02
【问题描述】:
我正在寻求帮助以 Python 3.x 字典格式访问带有特殊字符(重音字母等)的键值。所以这就是我想要完成的事情:
我有一个 .xml 文件,我使用 ElementTree 将其解析为 Python:
...
tree = ElementTree.parse(fileNamePath)
...
来源是一个名为 Cockatrice 的程序。这是他们的 card.xml 文件。
我有一个 .json 文本文件,我使用 json.load(open(fileName)) 加载。
来源为:https://mtgjson.com/json/AllCards-x.json.zip
这两个数据库都包含超过 16,000 个条目,对于我来说太麻烦了,无法在我必须使用的旧 PC 上一次轻松地打印出来。另外,对于一些特殊字符,CMD 并不总是愿意打印它们。
无论如何...
我使用在 XML 文件中找到的名称作为搜索 JSON(转换为 DICT)键时使用的变量。
cardName=root[1][loop_control01].find('name').text
然后,我使用该名称从 JSON/DICT 中提取我想要的信息,并且大多数情况下它都可以正常工作,但当它获得带有特殊字符的名称时除外。一个不断弹出的例子是Bösium Strip。
错误消息是关键错误:
KeyError: 'Bösium Strip'
我已通过记事本手动查看该密钥,确认该密钥存在于 JSON 中。在 XML 文件中,文本拼写为:
...
<card>
<name>Bösium Strip</name>...
在 JSON 文件中它被拼写为:
...
"Bösium Strip":{
"layout":"normal",...
虽然我知道在 CMD 中打印这些字符会出现问题,但这似乎不是问题,因为我没有将它们打印到屏幕上。我只需要能够在搜索 JSON/DICT 时引用密钥。
我已经尝试了 * 上的几个答案,但均无济于事。我需要使用相同的字符格式/编码来搜索 JSON/DICT,或者我需要遍历 JSON/DICT 并将所有键重新格式化为更易于搜索的格式/编码。
任何帮助完成任何一项都会让我高兴。感谢任何花时间给我今天生日礼物的人
【问题讨论】:
-
一个问题,我不得不说!恭喜你:)
-
@m0m0e 生日快乐!
-
非常感谢!
标签: json xml python-3.x unicode elementtree