I want to create string using integer appended to it, in a for loop. Like this:
for i in range(1,11):
string="string"+i
But it returns an error:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
What's the best way to concatenate the String and Integer?
This question is related to
python
string
integer
concatenation
for i in range(11):
string = "string{0}".format(i)
What you did (range[1,10]
) is
a[3]
) or a slice (a[3:5]
) of a list, [1,10]
is invalid, and range(1,10)
is [1, 2, 3, 4, 5, 6, 7, 8, 9]
, and you seem to want [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
And string = "string" + i
is a TypeError since you can't add an integer to a string (unlike JavaScript).
Look at the documentation for Python's new string formatting method, it is very powerful.
for i in range (1,10):
string="string"+str(i)
To get string0, string1 ..... string10
, you could do like
>>> ["string"+str(i) for i in range(11)]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10']
for i in range[1,10]:
string = "string" + str(i)
The str(i)
function converts the integer into a string.
I did something else. I wanted to replace a word, in lists off lists, that contained phrases. I wanted to replace that sttring / word with a new word that will be a join between string and number, and that number / digit will indicate the position of the phrase / sublist / lists of lists.
That is, I replaced a string with a string and an incremental number that follow it.
myoldlist_1=[[' myoldword'],[''],['tttt myoldword'],['jjjj ddmyoldwordd']]
No_ofposition=[]
mynewlist_2=[]
for i in xrange(0,4,1):
mynewlist_2.append([x.replace('myoldword', "%s" % i+"_mynewword") for x in myoldlist_1[i]])
if len(mynewlist_2[i])>0:
No_ofposition.append(i)
mynewlist_2
No_ofposition
string = 'string%d' % (i,)
If we want output like 'string0123456789'
then we can use map function
and join
method of string.
>>> 'string'+"".join(map(str,xrange(10)))
'string0123456789'
If we want List of string values then use list comprehension
method.
>>> ['string'+i for i in map(str,xrange(10))]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9']
Note:
Use xrange()
for Python 2.x
USe range()
for Python 3.x
Concatenation of a string and integer is simple: just use
abhishek+str(2)
You can use a generator to do this !
def sequence_generator(limit):
""" A generator to create strings of pattern -> string1,string2..stringN """
inc = 0
while inc < limit:
yield 'string'+str(inc)
inc += 1
# to generate a generator. notice i have used () instead of []
a_generator = (s for s in sequence_generator(10))
# to generate a list
a_list = [s for s in sequence_generator(10)]
# to generate a string
a_string = '['+", ".join(s for s in sequence_generator(10))+']'
Source: Stackoverflow.com