在python中将类似字符串的对象转换为字符串

时间:2013-06-16 17:51:59

标签: python string types type-conversion

我正在使用python和XMLBuilder,这是我从网上下载的模块(pypi)。它返回一个对象,它像一个字符串(我可以做print(x)),但是当我使用file.write(x)时,它崩溃并在XMLBuilder模块中抛出一个错误。

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

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

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

非常感谢任何有关此事的帮助。

4 个答案:

答案 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))将相同的文字放在myfileprint (x)将放入文件中的文本(减去打印放入其中的尾随换行符)。

答案 3 :(得分:0)

当你写:

print myObject

实际调用__repr__方法。

例如,如果要将该对象的字符串表示形式附加到x += myXMLObject.__repr__()变量,则可以执行:x