How can I concatenate a string and a number in Python?
PythonPython Problem Overview
I was trying to concatenate a string and a number in Python. It gave me an error when I tried this:
"abc" + 9
The error is:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
"abc" + 9
TypeError: cannot concatenate 'str' and 'int' objects
Why am I not able to do this?
How can I concatenate a string and a number in Python?
Python Solutions
Solution 1 - Python
Python is strongly typed. There are no implicit type conversions.
You have to do one of these:
"asd%d" % 9
"asd" + str(9)
Solution 2 - Python
If it worked the way you expected it to (resulting in "abc9"
), what would "9" + 9
deliver? 18
or "99"
?
To remove this ambiguity, you are required to make explicit what you want to convert in this case:
"abc" + str(9)
Solution 3 - Python
Since Python is a strongly typed language, concatenating a string and an integer, as you may do in Perl, makes no sense, because there's no defined way to "add" strings and numbers to each other.
> Explicit is better than implicit.
...says "The Zen of Python", so you have to concatenate two string objects. You can do this by creating a string from the integer using the built-in str()
function:
>>> "abc" + str(9)
'abc9'
Alternatively, use Python's string formatting operations:
>>> 'abc%d' % 9
'abc9'
Perhaps better still, use str.format()
:
>>> 'abc{0}'.format(9)
'abc9'
The Zen also says:
> There should be one-- and preferably only one --obvious way to do it.
Which is why I've given three options.
Solution 4 - Python
Either something like this:
"abc" + str(9)
or
"abs{0}".format(9)
or
"abs%d" % (9,)
Solution 5 - Python
You have to convert the int into a string:
"abc" + str(9)
Solution 6 - Python
You would have to convert the int into a string.
# This program calculates a workers gross pay
hours = float(raw_input("Enter hours worked: \n"))
rate = float(raw_input("Enter your hourly rate of pay: \n"))
gross = hours * rate
print "Your gross pay for working " +str(hours)+ " at a rate of " + str(rate) + " hourly is $" + str(gross)
Solution 7 - Python
Do it like this:
"abc%s" % 9
#or
"abc" + str(9)