РЕДАКТИРОВАТЬ: Я обновил функцию для достижения результатов, которые вы указали в комментариях.
Я использую довольно длинный список понимания, поэтому я быстро обрисую, чтопроверяется, чтобы добавить элемент в вывод:
- Переменная содержит число, а ("_m" + номер_месяца) находится в имени переменной
- В переменной нет номера(например, 'age')
- Нет другого примера этой переменной с другим месяцем
Таким образом, выполнение кода ниже выведет следующее для переменной месяца '2':
['roll_off_m4**', 'ov_offer_desc_m4', 'curr_ov_tier_desc2_m4', 'income', 'age', 'vid_offer_up_flag_m3', 'roll_off_m2', 'ov_offer_group_v2_desc_m4', 'oolpromo_rng_m2*', 'rsdvr_orig_m2', 'vidpromo_rng_m2*', 'ovpromo_rng_m2*']
Полный код:
# 're' is imported for determining if the month number is in the variable
import re
# Your initial list of variables
my_list = ['roll_off_m4**',
'ov_offer_desc_m4',
'curr_ov_tier_desc2_m4',
'income',
'age',
'vid_offer_up_flag_m3',
'vidpromo_rng_m4*',
'ovpromo_rng_m4*',
'ovpromo_rng_m3*',
'roll_off_m3',
'roll_off_m2',
'oolpromo_rng_m3*',
'ov_offer_group_v2_desc_m4',
'oolpromo_rng_m2*',
'rsdvr_orig_m2',
'vidpromo_rng_m2*',
'ovpromo_rng_m2*']
# This function will return the list for the month specified
def get_data_for_month(month_number, variable_list):
return [variable for variable in variable_list if (bool(re.search(r'\d', variable)) == True and ("_m" + str(month_number)) in variable) or (bool(re.search(r'\d', variable)) == False) or (variable.replace(variable[variable.find("_m"):variable.find("_m")+3], "_m2")) not in variable_list]
#function call
output = get_data_for_month(2, my_list)
#output is printed
print(output)