Как увеличить число внутри строки?

У меня есть такая строка:

a = 'CODE1'

Как увеличить 1 внутри строки на 1?

Я пробовал это:

a = a+1 

но получил эту ошибку:

TypeError: can only concatenate str (not "int") to str
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
122
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема в том, что вы пытались объединить типы str и int. Вы должны выбрать последний символ, преобразовать в int для операции увеличения и вернуться к str для конкатенации с остальной строкой:

a[:-1] + str(int(a[-1]) + 1)

Или в случаях, обсуждаемых в комментариях, вы можете использовать регулярное выражение для соответствия последней группе цифр и выполнять приращение:

import re

a = 'CODE19'

splits = re.split(r'(\d+)', a)

print(''.join(splits[:-2]) + str(int(splits[-2]) + 1))
# CODE20

Нет, я не пропустил. Но я просчитался, сработает 19 раз. Или, может быть, 18, я не пытаюсь быть точным.

Mark Ransom 09.03.2019 05:37

@MarkRansom, ты снова просчитался :) 19-й результат будет «110»

panda-34 09.03.2019 05:38

Вы можете увеличить последнее число в строке следующим образом:

re.sub('\d+(?!.*\d)', lambda d: str(int(d[0]) + 1), a)

Другие вопросы по теме