【问题标题】:Converting a string-like object into a string in python在python中将类似字符串的对象转换为字符串
【发布时间】:2013-06-12 17:34:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 试试file.write(str(x))
  • 可能file.write()函数没有调用对象的重载str函数。你试过 file.write(str(x)) 吗?

标签: python string types type-conversion


【解决方案1】:
file.write(str(x))

可能对你有用。

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

然而,并不是所有的函数都像print 一样聪明,如果你向它们传递一些不是字符串的东西,它们就会失败。字符串连接也不适用于混合类型。要使用这些函数,您必须手动转换非字符串类型的对象,方法是用str() 包装它们。比如:

x = str(x)+" "

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

【讨论】:

  • 谢谢,这就是我要找的东西,也很好地解释了。
【解决方案2】:

图书馆定义了__str__

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

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

file.write(str(x))

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      当你写作时:

      print myObject
      

      __repr__ 方法实际上被调用了。

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

      【讨论】:

      • print 仅在未找到 __str__ 时调用 __repr__
      猜你喜欢
      • 2021-02-23
      • 1970-01-01
      • 2021-08-03
      • 2017-02-07
      • 1970-01-01
      • 2017-11-10
      • 2011-03-16
      • 1970-01-01
      相关资源
      最近更新 更多