пользователей,
Я ломаю голову много часов, почему мой код не работает.
Я получаю данные из файла CSV, и я пытаюсь измените одно значение, когда совпадут два кода.
def mode(x):
for line in data_df['Bar_Code']:
#print(line) ~ Line outputs the Barcodes in the Bar_Code Column of the CSV file.
with open("Barcodes_to_match.txt") as barcodes:
for barcode in barcodes:
#print(barcode) ~ Outputs the Barcode that it need to be matched.
if barcode == line:
x = x.replace("True", "False")
return x
data_df['Published'] = data_df['Published'].apply(lambda x: mode(x))
data_df.to_csv(('Products.csv'), encoding='UTF-8', quoting=csv.QUOTE_ALL, quotechar='"', index=None, sep=str(","))
Файл Product.csv:
Bar_Code, Product, Published
BLA00BLA00, Product1, True
BLU00BLU00, Product2, False
BLI00BLI00, Product3, True
BLE00BLE00, Product4, False
Barcodes_to_match.txt:
BLA00BLA00
BLI00BLI00
Итак, мне нужно изменить значения для Product строк (BLA00BLA00 и BLI00BLI00) Опубликованный столбец на False
Может ли кто-нибудь проверить мой метод для замены значений?
Спасибо!
Редактировать: Когда я добавляю команду печати, кажется, что код запакован в последний матч в бесконечном l oop.
if barcode == line:
print(barcode + " = " + line)
x = x.replace("True", "False")
return x
Output:
BLI00BLI00 = BLI00BLI00
BLI00BLI00 = BLI00BLI00
BLI00BLI00 = BLI00BLI00
BLI00BLI00 = BLI00BLI00
BLI00BLI00 = BLI00BLI00
BLI00BLI00 = BLI00BLI00
BLI00BLI00 = BLI00BLI00
BLI00BLI00 = BLI00BLI00