У меня есть CSV-файл с одного столбца, который имеет следующие данные в файле test.csvсписок Минимальное видоизменение, делая несколько замен в цикле
3 0JKT02 CX85d
3 0JNAd0 CP80d
3 0KAAd0 CT894
3 0KAAd0 CT895
3 0LARd0 CL003
3 0JNA10 CL80d
3 0JNA20 CL80d
3 0JNA30 CL80d
3 0JNA40 CL80d
3 0FAK3e CL00v
3 0FAK3e CT00e
, что я хочу сделать, это заменить всю небольшую крышку (d, e и v) с экземплярами. Здесь
d = [1,2,3,4]
e = [1,2]
v = [3,4]
Так взять пример последних двух пунктов, мне нужно, чтобы получить 3 0FAK31 CL003
, 3 0FAK32 CT003
, 3 0FAK31 CL004
, 3 0FAK32 CT004
.
Я объявил массив со всеми старыми значениями в них, я прохожу через этот массив и обновляю его один за другим, потому что он мутирует, я не получаю ожидаемых результатов. Кажется, он пропускает код «удалить» и просто закручивает список. Плюс он все еще имеет переменную e и v в «oldarray». Я расстроен, пожалуйста, помогите. Также, если вы можете критиковать мой код и предлагать больше питонического способа сделать это, я был бы признателен. Вот код ...
class Compare:
def __init__(self):
f1 = open('test.csv','r')
self.oldarray = []
for row1 in f1:
self.oldarray.append(row1.strip('\n').strip())
self.dict1 = {'d':[1,2,3,4],'e':['1','2'], 'v':['3','4']}
def work(self,key,values):
for item in self.oldarray:
if key in item:
for each in values:
self.oldarray.append(item.replace(key,each))
self.oldarray.remove(item)
def do(self):
for key,values in self.dict1.items():
self.work(key,values)
if __name__ == '__main__':
import csv
x = Compare()
x.do()
for i in x.oldarray:
print i
Нечетный дизайн. Для этого используйте простые функции и переменные. –
Да, мне не нужен дизайн ООП, но я пытаюсь это узнать. Обычно я бы выполнял только функции. – LuckyStarr
Используйте OOP, когда вам это нужно, не используйте его везде. Если вы узнаете, то это довольно плохой пример. – simonzack