问题
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?
回答1:
Modern string formatting:
"{} and {}".format("string", 1)
回答2:
No string formatting:
>> print 'Foo',0
Foo 0
回答3:
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.
回答4:
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 Python3 syntax but the parentheses after print were always allowed (optional) until version 3 made them mandatory.
Hope this helps.
Caitlin
回答5:
format() method can be used to concatenate string and integer
print(s+"{}".format(i))
来源:https://stackoverflow.com/questions/11559062/concatenating-string-and-integer-in-python