python 条件格式替换

python conditional formatting replace

我有一个 table,其中包含当前月份和接下来 24 个月的列名: 即 col_tier1、col_tier1_mo1、col_tier_mo2...col_tier_mo24

我有一个列表,我正在为更新格式化其中 col_tier1_mo1 = col_tier1, col_tier2_mo = col_tier1_mo ....

在没有 "mo_"

的第一行获取正确格式时遇到问题
cols24mo_tiers = [
    "col_tier1",
    "col_tier2"
]

格式化字符串

    for col_prefix in cols24mo_tiers:
        monthly_cols.extend(["{0}{1} = {0}{2}".format(col_prefix, str(i+1), str(i) if i > 0 else '') for i in range(24)])        

以为我可以做这样的事情,但 python 不喜欢

for col_prefix in cols24mo_tiers:
        monthly_cols.extend(["{0}{1} = {0}{2}".format(if i > 0 col_prefix+"mo_" else col_prefix, str(i+1), str(i) if i > 0 else '') for i in range(24)])

你差不多明白了,但是你把参数列表中第一个 if 的顺序弄错了 .format。你有 if i > 0 col_prefix+"mo_" else col_prefix 而它应该是 col_prefix+"mo_" if i > 0 else col_prefix (对于后来的 ifstr(i),你是正确的)。那么整个块应该是

for col_prefix in cols24mo_tiers:
    monthly_cols.extend(["{0}{1} = {0}{2}".format(col_prefix + "mo_" if i > 0 else col_prefix, str(i+1), str(i) if i > 0 else '') for i in range(24)])