2010-07-08 26 views

回答

71
myvariable = 4 
mystring = str(myvariable) # '4' 

还,或者尝试再版:

mystring = repr(myvariable) # '4' 

这被称为蟒 “转化”,并且是相当普遍的。

+5

我不会使用repr(myvariable) - 它经常返回关于类类型,内存地址等的信息。它对于调试更加有用。使用str(myvariable)转换为字符串和unicode(变量)以转换为unicode。 – Abgan 2010-07-08 14:29:51

+0

完全同意Abgan,感谢您的阐述。 – 2010-07-08 14:31:42

+1

unicode呢?像'str(u'ä')'这样的东西是行不通的。然而'repr(u'ä')'会起作用。 – 2016-10-10 09:23:26

4

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

+1

这是一个重要的但罕见的考虑因素。你提到它很好。 – jathanism 2010-07-08 15:51:08

8

str(object)将做的伎俩。

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

+0

哪种方法有效? 'str(any_var)'或'any_var .__ str __()' – 2016-09-15 16:49:08

+0

@ Kedar.Aitawdekar:即使在执行时间上存在明显差异(我怀疑,但我鼓励你用'timeit'模块对它进行修改),你应该使用'str(any_var)',因为它对人类更具可读性,并允许受益于'any_var'定义'__repr __()'但未定义'__str __()'的情况。 – Abgan 2016-10-11 15:22:47

+0

感谢您的回复。 – 2016-10-13 06:38:06

1

只需使用str - 例如:

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

使用str内置:

x = str(something) 

例子:

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

... 

从文档:

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

31

str是为了产生对象数据的字符串表示。如果你正在写自己的类,并且要str为你工作,添加:

def __str__(self): 
    return ... 

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

repr是一个类似的方法,它通常产生有关班级信息的信息。对于大多数核心库对象,repr会在尖括号之间生成类名(以及某些类信息)。例如,只需在交互窗格中输入对象,而不使用print或其他任何东西,就可以使用repr

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

def __repr__(self): 
    return ... 

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

11

我看到所有答案推荐使用str(object)。如果你的对象比ascii字符多,你可能会失败,你会看到像ordinal not in range(128)这样的错误。这是事实,我当我在语言不是英语

转换字符串列表中的其他我用unicode(object)

HTH解决它

+1

在Python 3.0以后,str(object)默认为unicode – dmjalund 2018-03-05 03:17:04

0

你可以使用%S的方式像下面

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

使用格式:

"%s" % (x) 

防爆充足:

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

输出: 周四1月11日20时40分05秒2018

相关问题