我正在使用python和XMLBuilder,这是我从网上下载的模块(pypi)。它返回一个对象,它像一个字符串(我可以做print(x)),但是当我使用file.write(x)时,它崩溃并在XMLBuilder模块中抛出一个错误。
我只是想知道如何将它返回的对象转换为字符串?
我已经确认我正在写文件。
我已经尝试过例如x = y,但是,正如我想的那样,它只是创建了一个指针,而且x=x+" "
我仍然会收到错误。它还返回一个带有“\ n”的对象之类的字符串。
非常感谢任何有关此事的帮助。
答案 0 :(得分:1)
file.write(str(x))
可能适合你。
背景信息:大多数类型都定义了函数__str__
或__repr__
(或两者)。如果将这种类型的对象传递给print
,它将识别出您没有传递str
并尝试调用其中一个函数以将对象转换为字符串。 / p>
但是,并非所有函数都像print
一样智能,如果您传递的不是字符串,则会失败。字符串连接也不适用于混合类型。要使用这些函数,您必须手动转换非字符串类型对象,方法是用str()
包装它们。例如:
x = str(x)+" "
这将创建一个新字符串并将其分配给变量x
,该变量之前保存该对象(您现在丢失该对象!)。
答案 1 :(得分:1)
图书馆已定义__str__
:
def __str__(self):
return tostring(~self, self.__document()['encoding'])
所以你只需要使用str(x)
:
file.write(str(x))
答案 2 :(得分:0)
我不太确定你的问题是什么,但是print
会自动调用str
所有的参数......所以如果你想要与print
相同的输出放入您的文件,然后myfile.write(str(whatever))
将相同的文字放在myfile
中print (x)
将放入文件中的文本(减去打印放入其中的尾随换行符)。
答案 3 :(得分:0)
当你写:
print myObject
实际调用__repr__
方法。
例如,如果要将该对象的字符串表示形式附加到x += myXMLObject.__repr__()
变量,则可以执行:x
。