gpt4 book ai didi

python - 错误的字符串表示

转载 作者:行者123 更新时间:2023-12-01 04:07:50 24 4
gpt4 key购买 nike

我对 Python 非常非常陌生,我想我可以做一个简单的应用程序来为我解析 xml 格式。问题是,看起来我几乎从 element.getElementsByTagName() 方法中获取了无效元素。我将在下面附上所有相关源代码。

当我尝试格式化从 XML 捕获的数据时,就会出现问题;错误代码如下:

Traceback (most recent call last):
File "C:/development/xml2dnf/main.py", line 8, in <module> output_file.write(str(result))
File "C:\development\xml2dnf\Shotsheet.py", line 18, in __str__ reply += str(shot) + "\n"
File "C:\development\xml2dnf\StaticShot.py", line 19, in __str__ self.rect[2], self.rect[3])
ValueError: unexpected '{' in field name

我试图摆弄报告的有问题的行,直到我发现错误可能不存在。当我向上提升我的层次结构时,我注意到如果我告诉我的一个类解析我发送给它的特定列表,它几乎可以按预期工作。当我不解析上述内容时,错误就会神奇地消失。

我认为问题出在我的两个类上,于是我去找他们并尽我所能找到缓解该杂散“{”的方法。我没有发现任何问题。

我尝试进行故障排除,直到 xml 本身。我打印出来了,看起来还不错。然而,当我打印我应该得到的结果时,我注意到它打印了一些奇怪的、无效的值,然后打印了如果错误不存在的话我应该得到的值。

我做了一些谷歌搜索,但在这个问题上我找不到什么。无论我能找到什么,要么不能缓解我的问题,要么无关紧要。考虑到我是这门语言的新手,我已经用尽了故障排除方法。

<小时/>

更新:

在搞乱了 XML 后,我注意到无效元素是由于我不理解 getElementsById 的工作原理造成的。该方法返回具有 ID 的所有 元素,而不是仅返回该元素的直接子元素。调整实现解决了这个问题。

现在我已经解决了这个问题,但我仍然遇到上述错误。我唯一能想到的是我的类的 __str__ 实现是错误的,但我仍然不知道如何实现。单独打印每个参数会产生预期的结果,但使用 __str__ 会严重失败,并且该错误不会以任何可以想象的方式帮助我。

为了便于说明,这里是解释器所说的有错误的代码:

def __str__(self):
reply = "ShotData\x7Bid = {0} rect = ({1}, {2}, {3}, {4}) ".format(self.index, self.rect[0], self.rect[1],
self.rect[2], self.rect[3])
if self.render != 'ALPHA':
reply += "render = {0} ".format(self.render)

if self.collision >= 0:
reply += "collision = {0} ".format(self.collision)

if self.fixed_angle:
reply += "fixed_angle = true angular_velocity = {0}\x7D".format(self.angular_velocity)

delay_string = str(self.delay_color)
reply += "delay_color = {0} ".format(delay_string)

return reply

调用它的代码:

def __str__(self):
reply = "#UserShotData\n\nshot_image = {0}\ndelay_rect=({1}, {2}, {3}, {4})\n\n"

for shot in self.shot_array:
reply += str(shot) + "\n"

delay_x1 = self.delay_rect[0]
delay_y1 = self.delay_rect[1]
delay_x2 = self.delay_rect[2]
delay_y2 = self.delay_rect[3]

return reply.format(self.shot_image, delay_x1, delay_y1, delay_x2, delay_y2)

以及询问字符串表示形式的指令:

output_file.write(str(result))

一如既往,我们将不胜感激有关此问题的任何帮助。

最佳答案

问题在于,编写 ShotData\x7Bid 与编写 ShotData{Bid 完全相同,这里使用转义序列不会导致 .format 以不同方式对待大括号。如果你想转义大括号,你需要将它加倍:

reply = "ShotData{{id = {0} rect = ({1}, {2}, {3}, {4}) ".format(self.index, self.rect[0], self.rect[1], self.rect[2], self.rect[3])

关于python - 错误的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com