如何将任何数据类型更改为字符串?

如何在 Python 中将任何数据类型更改为字符串?

576630 次浏览
myvariable = 4
mystring = str(myvariable)  # '4'

另外,也可以尝试 rep:

mystring = repr(myvariable) # '4'

这在 python 中称为“转换”,非常常见。

但是,每个数据类型都可以定义自己的字符串转换,所以这可能不是您想要的。

str(object)就行了。

如果要更改对象的字符串化方式,请为对象的类定义 __str__(self)方法。这种方法必须返回 str 或 unicode 对象。

只需使用 str-例如:

>>> str([])
'[]'

使用内置的 str:

x = str(something)

例子:

>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'


...

根据文件:

返回一个字符串,其中包含一个对象的可打印表示形式。对于字符串,它返回字符串本身。与 repr (object)的区别在于 str (object)并不总是试图返回 eval ()可以接受的字符串; 它的目标是返回一个可打印的字符串。如果没有给出参数,则返回空字符串,”。

str意味着生成对象数据的字符串表示形式。如果您正在编写自己的类,并希望 str为您工作,请添加:

def __str__(self):
return "Some descriptive string"

print str(myObj)将调用 myObj.__str__()

repr是一种类似的方法,它通常产生关于类信息的信息。对于大多数核心库对象,repr会在尖括号之间生成类名(有时还会生成一些类信息)。例如,将使用 repr,只需在交互面板中键入对象,而不使用 print或其他任何东西。

您可以为自己的对象定义 repr的行为,就像定义 str的行为一样:

def __repr__(self):
return "Some descriptive string"

交互面板中的 >>> myObj,或者 repr(myObj),将导致 myObj.__repr__()

我看到所有的答案都推荐使用 str(object)。如果您的对象有多个 ascii 字符,那么它可能会失败,您将看到类似于 ordinal not in range(128)的错误。在我用英语以外的语言转换字符串列表时,就是这种情况

我用 unicode(object)解决了这个问题

你可以像下面这样使用 %s

>>> "%s" %([])
'[]'

使用格式:

"%s" % (x)

例如:

x = time.ctime(); str = "%s" % (x); print str

产出: 2018年1月11日星期四20:40:05

如果您真的想要“更改”数据类型,请小心。与其他情况一样(例如,在 for循环中更改迭代器) ,这可能会带来意想不到的行为:

>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18