Мне нужно добавить _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
Для решения без регулярного выражения вы можете использовать функцию 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'
Только что отредактировал вопрос, извините, что не уточнил раньше.
@npatel Чтобы было понятнее, это всегда одна цифра? Я обновлю ответ прямо сейчас
Ваше решение даже не сравнивает _abc_
, оно ищет только цифру. Это не то, что я ищу.
Это может быть любое количество цифр.
Но имя не всегда
name_abc_0
, оно может бытьname_abc_0_read
или любым другим после_0
.