如何在 Python 中将任何数据类型更改为字符串?
myvariable = 4 mystring = str(myvariable) # '4'
另外,也可以尝试 rep:
mystring = repr(myvariable) # '4'
这在 python 中称为“转换”,非常常见。
但是,每个数据类型都可以定义自己的字符串转换,所以这可能不是您想要的。
str(object)就行了。
str(object)
如果要更改对象的字符串化方式,请为对象的类定义 __str__(self)方法。这种方法必须返回 str 或 unicode 对象。
__str__(self)
只需使用 str-例如:
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__()。
print str(myObj)
myObj.__str__()
repr是一种类似的方法,它通常产生关于类信息的信息。对于大多数核心库对象,repr会在尖括号之间生成类名(有时还会生成一些类信息)。例如,将使用 repr,只需在交互面板中键入对象,而不使用 print或其他任何东西。
repr
print
您可以为自己的对象定义 repr的行为,就像定义 str的行为一样:
def __repr__(self): return "Some descriptive string"
交互面板中的 >>> myObj,或者 repr(myObj),将导致 myObj.__repr__()
>>> myObj
repr(myObj)
myObj.__repr__()
我看到所有的答案都推荐使用 str(object)。如果您的对象有多个 ascii 字符,那么它可能会失败,您将看到类似于 ordinal not in range(128)的错误。在我用英语以外的语言转换字符串列表时,就是这种情况
ordinal not in range(128)
我用 unicode(object)解决了这个问题
unicode(object)
你可以像下面这样使用 %s
%s
>>> "%s" %([]) '[]'
使用格式:
"%s" % (x)
例如:
x = time.ctime(); str = "%s" % (x); print str
产出: 2018年1月11日星期四20:40:05
如果您真的想要“更改”数据类型,请小心。与其他情况一样(例如,在 for循环中更改迭代器) ,这可能会带来意想不到的行为:
for
>> dct = {1:3, 2:1} >> len(str(dct)) 12 >> print(str(dct)) {1: 31, 2: 0} >> l = ["all","colours"] >> len(str(l)) 18