#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)])