我有以下变量列表
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*
有些变量,如带*的变量本质上是相同的变量,但取值的月份可以不同。 就像2月的roll_off是m2一样,3月是m3而4月是m4。 如果存在多个月份值,我只需要选择对应于m2的变量。 如果仅存在一个月的值,则仅选择该值。
对于年龄和收入等变量,由于没有与之关联的月份信息,因此我照原样选择它们。
所有这些选择的值将附加到变量的最终列表中。
有人可以帮我用python吗?
答案 0 :(得分:1)
编辑: 我已经更新了该功能,以实现您在注释中指定的结果。
我使用的列表理解很长,因此我将快速概述将项目添加到输出时要进行的检查:
因此,运行下面的代码将为月份变量'2'输出以下内容:
# '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)
完整代码:
SpriteRenderable