Есть несколько проблем с вашим кодом. Я надеюсь, что ничего не пропущу, но дайте мне знать, если что-то неясно:
mapping = {"'2020 Projects'!$I3" : "end_date",
"'2020 Projects'!$H3" : "start_date",
"'2020 Projects'!$L3" : "perc_baa",
"'2020 Projects'!$G3" : "prob",
"'2020 Projects'!$J3" : "monthly_rev",
"43951": "april_30_number",
"43922": "april_1_number",
"43952": "may_1_number",}
def code_to_ex(s):
excel = s
for word, code in mapping.items():
# not excel = s.replace, since you want to continuously update excel
excel = excel.replace(code, word)
print(excel)
def ex_to_code(s):
# renamed code to all_code, since you are iterating over mapping.items() with code
all_code = s
for word, code in mapping.items():
# same issue as above
all_code = all_code.replace(word, code)
print(all_code)
String1 = "IF('2020 Projects'!$H3>43922,yes,no)"
String2 = 'IF(start_date>april_30_number, no, yes)'
ex_to_code(String1)
code_to_ex(String2)
Вывод:
IF(start_date>april_1_number,yes,no)
IF('2020 Projects'!$H3>43951, no, yes)
Слово предупреждения, так как этот метод немного наивен : вы можете быть отключены, если code
является подстрокой word
или наоборот, поскольку сопоставление может выполняться дважды: например, для правил {'AB': 'C', 'C': 'D'}
, строка AB
может отображаться на D
.