I want to create a string using an 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?
asked May 17, 2010 at 7:52
6
NOTE:
The method used in this answer [backticks] is deprecated in later versions of Python 2, and removed in
Python 3. Use the str[]
function instead.
You can use:
string = 'string'
for i in range[11]:
string +=`i`
print string
It will print string012345678910
.
To get string0, string1 ..... string10
you can use this as YOU suggested:
>>> string = "string"
>>> [string+`i` for i in range[11]]
For Python 3
You can use:
string = 'string'
for i in range[11]:
string += str[i]
print string
It will print string012345678910
.
To
get string0, string1 ..... string10
, you can use this as YOU suggested:
>>> string = "string"
>>> [string+str[i] for i in range[11]]
answered Aug 21, 2013 at 17:45
8
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']
answered May 17, 2010 at 7:53
YOUYOU
116k32 gold badges184 silver badges216 bronze badges
5
for i in range[1,10]:
string = "string" + str[i]
The str[i]
function converts the integer into a string.
answered May 17, 2010 at 7:53
Rizwan KassimRizwan Kassim
7,6993 gold badges23 silver badges34 bronze badges
0
string = 'string%d' % [i,]
answered May 17, 2010 at 7:53
2
for i in range[11]:
string = "string{0}".format[i]
You did [range[1,10]
]:
- a TypeError since brackets denote an index [
a[3]
] or a slice [a[3:5]
] of a list, - a SyntaxError since
[1,10]
is invalid, and - a double off-by-one error since
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.
answered May 17, 2010 at 8:17
Tim PietzckerTim Pietzcker
317k56 gold badges492 silver badges548 bronze badges
1
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]] + ']'
answered Jul 3, 2015 at 3:01
0
If we want output like 'string0123456789'
then we can use the map function and join method of string.
>>> 'string' + "".join[map[str, xrange[10]]]
'string0123456789'
If we want a list of string values then use the 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.
answered Jan 5, 2015 at 9:10
Vivek SableVivek Sable
9,4663 gold badges36 silver badges51 bronze badges
1
I did something else.
I wanted to replace a word, in lists of lists, that contained phrases.
I wanted to replace that string / 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
answered Apr 29, 2016 at 14:20
Concatenation of a string and integer is simple: just use
abhishek+str[2]
answered Apr 1, 2016 at 9:34
HiroHiro
2,8521 gold badge14 silver badges9 bronze badges
1