Как легко заменить код ? От VBA до Python

#python #dataframe #if-statement #converters

Вопрос:

У меня есть 1300 строк кода в VBA, которые выглядят примерно так :

 ElseIf InStr(LCase(A), LCase("B")) Then function = "* C"
 

Я хочу иметь что-то подобное на Python :

 elif (df2["A"]=="B") is True:
        return "* C" 
 

Меняются только A, B и C, вы знаете какой-нибудь способ это сделать ? Моя первая идея состояла в том, чтобы использовать печать и .формат для чего-то подобного :

 print("elif (df2['{}']=='{}') is True: return '{}' ".format(A, "B", "* C"))
                   
 

Но это не работает для изменения сотен строк

Комментарии:

1. Похоже, ваш код нуждается в доработке: 1300 строк-это вполне кодовый запах.

2. Вы, вероятно, правы, но это только в том случае, если условие с переменной информацией, и я действительно не знаю, как провести рефакторинг, так что это довольно сложно

Ответ №1:

Если кто-нибудь однажды задумается. Я не сомневаюсь, что существует лучший способ, но, по крайней мере, он работает :

 import re
import csv
a = " "
compteur = 0
second_compteur, first_compteur = "", ""

with open(r"patch") as csvfile:
    liste1 = []
    for row in csvfile:
        a  = row

        b = re.compile('"[^"]*"')

        for value in b.findall(a):
            if compteur % 2 == 0:
                first_compteur = value
            else:
                second_compteur = value
            compteur  = 1

        with open(r"path_new_csv", "a", newline="") as csvfile2:
            writer = csv.writer(csvfile2, quotechar="'")
            writer.writerow(["elif (df2[{}]=={}) is True: return {}".format("ShortDescr", first_compteur, second_compteur)])