Как добавить определенную строку к другой строке на основе совпадения определенной строки?

Мне нужно добавить _123, если в имени есть _abc_0 или _abc_1 или _abc_#, где # is any number of digits. Как я могу написать это в состоянии if?

name = "name_abc_0_any_chars"
if "_abc_<#any digit>" in name: #not sure what to write in place of <#any digit>
    name = name + "_123"
print "name: ", name

Выход:

name: name_abc_0_any_chars_123
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
42
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Для решения без регулярного выражения вы можете использовать функцию any(). Например.

a = ['_abc_0', '_abc_1', '_abc_2', '_abc_3', '_abc_4', '_abc_5', '_abc_6', '_abc_7', '_abc_8', '_abc_9']
name = "name_abc_34_other_characters"

if any(x in name for x in a):
    name += "_123"

print("name: ", name)

Выход:

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

Отредактировано

Если вы хотите проверить, содержит ли переменная _abc_#d, используйте re:

import re

name = "name_abc_0_any_chars"
if re.findall('abc_\d+', name):
    name += '_123'

Выход:

'name_abc_0_any_chars_123'

Но имя не всегда name_abc_0, оно может быть name_abc_0_read или любым другим после _0.

npatel 12.06.2019 02:46

Только что отредактировал вопрос, извините, что не уточнил раньше.

npatel 12.06.2019 02:47

@npatel Чтобы было понятнее, это всегда одна цифра? Я обновлю ответ прямо сейчас

Chris 12.06.2019 02:48

Ваше решение даже не сравнивает _abc_, оно ищет только цифру. Это не то, что я ищу.

npatel 12.06.2019 02:48

Это может быть любое количество цифр.

npatel 12.06.2019 02:49

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