Concatenating string and integer in Python

Question:

In Python say you have

s = "string"
i = 0
print s + i

will give you error, so you write

print s + str(i)

to not get error.

I think this is quite a clumsy way to handle int and string concatenation.

Even Java does not need explicit casting to String to do this sort of concatenation.
Is there a better way to do this sort of concatenation, i.e, without explicit casting in Python?

Asked By: specialscope

||

Answers:

String formatting, using the new-style .format() method (with the defaults .format() provides):

 '{}{}'.format(s, i)

Or the older, but “still sticking around”, %-formatting:

 '%s%d' %(s, i)

In both examples above there’s no space between the two items concatenated. If space is needed, it can simply be added in the format strings.

These provide a lot of control and flexibility about how to concatenate items, the space between them etc. For details about format specifications see this.

Answered By: Levon

Modern string formatting:

"{} and {}".format("string", 1)
Answered By: user647772

No string formatting:

>> print 'Foo',0
Foo 0
Answered By: Burhan Khalid

Python is an interesting language in that while there is usually one (or two) "obvious" ways to accomplish any given task, flexibility still exists.

s = "string"
i = 0

print (s + repr(i))

The above code snippet is written in Python 3 syntax, but the parentheses after print were always allowed (optional) until version 3 made them mandatory.

Answered By: CaitlinG

The format() method can be used to concatenate a string and an integer:

print(s + "{}".format(i))
Answered By: Aakash Wadhwa

If you only want to print, you can do this:

print(s, i)
Answered By: Daniel Jiménez

In Python 3.6 and newer, you can format it just like this:

new_string = f'{s} {i}'
print(new_string)

Or just:

print(f'{s} {i}')
Answered By: Kasra Najafi

Let’s assume you want to concatenate a string and an integer in a situation like this:

for i in range(1, 11):
   string = "string" + i

And you are getting a type or concatenation error.

The best way to go about it is to do something like this:

for i in range(1, 11):
   print("string", i)

This will give you concatenated results, like string 1, string 2, string 3, etc.

Answered By: Mustapha Babatunde

You can use the an f-string too!

s = "string"
i = 95
print(f"{s}{i}")
Answered By: Will
s = "string"
i = 0
# print s + i
print(s , i) # using comma to concatenate instead of the '+' sign saves you all the stress
Answered By: Jeff Erhabor