Reputation: 45535
How can I change any data type into a string in Python?
Upvotes: 174
Views: 643236
Reputation: 323
Be careful if you really want to "change" the data type. Like in other cases (e.g. changing the iterator in a for
loop) this might bring up unexpected behaviour:
>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
Upvotes: 1
Reputation: 751
I see all answers recommend using str(object)
. It might fail if your object have more than ascii characters and you will see error like ordinal not in range(128)
. This was the case for me while I was converting list of string in language other than English
I resolved it by using unicode(object)
Upvotes: 21
Reputation: 5056
str
is meant to produce a string representation of the object's data. If you're writing your own class and you want str
to work for you, add:
def __str__(self):
return "Some descriptive string"
print str(myObj)
will call myObj.__str__()
.
repr
is a similar method, which generally produces information on the class info. For most core library object, repr
produces the class name (and sometime some class information) between angle brackets. repr
will be used, for example, by just typing your object into your interactions pane, without using print
or anything else.
You can define the behavior of repr
for your own objects just like you can define the behavior of str
:
def __repr__(self):
return "Some descriptive string"
>>> myObj
in your interactions pane, or repr(myObj)
, will result in myObj.__repr__()
Upvotes: 74
Reputation: 3445
Use formatting:
"%s" % (x)
Example:
x = time.ctime(); str = "%s" % (x); print str
Output: Thu Jan 11 20:40:05 2018
Upvotes: 0
Reputation: 3716
str(object)
will do the trick.
If you want to alter the way object is stringified, define __str__(self)
method for object's class. Such method has to return str or unicode object.
Upvotes: 14
Reputation: 39893
myvariable = 4
mystring = str(myvariable) # '4'
also, alternatively try repr:
mystring = repr(myvariable) # '4'
This is called "conversion" in python, and is quite common.
Upvotes: 154
Reputation: 188014
Use the str
built-in:
x = str(something)
Examples:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
From the documentation:
Return a string containing a nicely printable representation of an object. For strings, this returns the string itself. The difference with repr(object) is that str(object) does not always attempt to return a string that is acceptable to eval(); its goal is to return a printable string. If no argument is given, returns the empty string, ''.
Upvotes: 12
Reputation: 49802
With str(x)
. However, every data type can define its own string conversion, so this might not be what you want.
Upvotes: 6