Конкатенация Python String и Integer
Я хочу создать строку с использованием целого числа, присоединенного к ней, в цикле for. Вот так:
for i in range(1,11):
string="string"+i
Но он возвращает ошибку:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Каков наилучший способ объединения строк и целых чисел?
Ответы
Ответ 1
Примечание:
Метод, используемый в этом ответе (backticks), устарел в более поздних версиях Python 2 и удален в Python 3. Используйте str()
вместо этого.
Вы можете использовать:
string = 'string'
for i in range(11):
string +=`i`
print string
Откроется string012345678910
.
Чтобы получить string0, string1 ..... string10
, вы можете использовать это как @YOU, предлагаемое
>>> string = "string"
>>> [string+`i` for i in range(11)]
Обновление согласно Python3
Вы можете использовать:
string = 'string'
for i in range(11):
string +=str(i)
print string
Откроется string012345678910
.
Чтобы получить string0, string1 ..... string10
, вы можете использовать это как @YOU, предлагаемое
>>> string = "string"
>>> [string+str(i) for i in range(11)]
Ответ 2
for i in range (1,10):
string="string"+str(i)
Чтобы получить string0, string1 ..... string10
, вы можете сделать, например
>>> ["string"+str(i) for i in range(11)]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10']
Ответ 3
string = 'string%d' % (i,)
Ответ 4
for i in range[1,10]:
string = "string" + str(i)
Функция str(i)
преобразует целое число в строку.
Ответ 5
for i in range(11):
string = "string{0}".format(i)
Что вы сделали (range[1,10]
) -
- a TypeError, поскольку скобки обозначают индекс (
a[3]
) или срез (a[3:5]
) списка,
- a SyntaxError, поскольку
[1,10]
недействителен, и
- двойная ошибка за один раз, поскольку
range(1,10)
- [1, 2, 3, 4, 5, 6, 7, 8, 9]
, и вам кажется, что нужно [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
И string = "string" + i
- это TypeError, поскольку вы не можете добавить целое число в строку (в отличие от JavaScript).
Посмотрите документацию на метод форматирования новой строки Python, это очень мощный.
Ответ 6
Вы можете использовать генератор для этого!
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))+']'
Ответ 7
Если нам нужен вывод типа 'string0123456789'
, то мы можем использовать метод map function
и join
для строки.
>>> 'string'+"".join(map(str,xrange(10)))
'string0123456789'
Если мы хотим Список строковых значений, используйте метод list comprehension
.
>>> ['string'+i for i in map(str,xrange(10))]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9']
Примечание:
Используйте xrange()
для Python 2.x
USe range()
для Python 3.x
Ответ 8
Я сделал что-то еще.
Я хотел заменить слово в списках списков, содержащих фразы.
Я хотел заменить это sttring/word новым словом, которое будет соединением между строкой и числом, и что число/цифра укажет положение фразы/подсписок/списков списков.
То есть, я заменил строку строкой и добавочным числом, которое следует за ней.
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
Ответ 9
Конкатенация строки и целого числа просто:
просто используйте
abhishek'+str(2)'