1

我正在使用 python 和 XMLBuilder,这是我从 Internet (pypi) 下载的一个模块。它返回一个对象,其工作方式类似于字符串(我可以执行 print(x)),但是当我使用 file.write(x) 时,它会崩溃并在 XMLBuilder 模块中引发错误。

我只是想知道如何将它返回的对象转换为字符串?

我已经确认我正在正确地写入文件。

例如,我已经尝试过 x = y 虽然,正如我所想,它只是创建了一个指针,而且x=x+" "我仍然得到一个错误。它还返回一个字符串,如带有“\n”的对象。

任何有关此事的帮助将不胜感激。

4

4 回答 4

1
file.write(str(x))

可能会为你工作。

背景信息:大多数类型都定义了一个功能__str____repr__(或两者)。如果您将这种类型的对象传递给print,它将识别出您没有传递 astr并尝试调用这些函数之一以将对象转换为字符串。

print但是,如果您向它们传递非字符串的东西,并不是所有的函数都那么聪明并且会失败。字符串连接也不适用于混合类型。要使用这些函数,您必须手动转换非字符串类型的对象,方法是用str(). 例如:

x = str(x)+" "

这将创建一个新字符串并将其分配给变量x,该变量之前保存了该对象(您现在丢失了该对象!)。

于 2013-06-16T17:53:23.753 回答
1

图书馆__str__定义:

def __str__(self):
    return tostring(~self, self.__document()['encoding'])

所以你只需要使用str(x)

file.write(str(x))
于 2013-06-16T17:56:26.443 回答
0

我不太确定您的问题是什么,但会print自动调用str它的所有参数...因此,如果您想要将相同的输出print放入文件中,那么将放入myfile.write(str(whatever))相同的文本文件(减去 print 放在那里的尾随换行符)。myfileprint (x)

于 2013-06-16T17:53:38.317 回答
0

当你写:

print myObject

__repr__方法实际上被调用。

因此,例如,您可以这样做:x += myXMLObject.__repr__()如果您想将该对象的字符串表示形式附加到您的x变量中。

于 2013-06-16T17:55:17.623 回答