Я пытаюсь написать новый файл CSV, который анализирует файл большего размера и записывает только строки в соответствии с моими конкретными условиями. У меня возникла проблема с корректным выполнением моих условий, поскольку я не хочу, чтобы новая строка записывалась с «номером SKU», а «флаг запаса части» - «Y».
Я попытался обойти это, добавив еще один цикл for перед основным циклом for, который будет продолжаться через записи, если будет выполнено вышеуказанное условие.
Любая помощь приветствуется, ниже приведен код.
import csv
with open('4-22 inventory.csv', 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
with open ('stocking.csv', 'w', newline = '') as new_file:
fieldnames = ['SEGMENT_CODE','WHS_NUMBER','WHS_GL_NUMBER', 'LINE_CODE', 'SUBLINE_CODE', 'PART_NBR', 'SKU_NUMBER', 'MASTER_ITEM_FLAG',
'PART_STOCKING_FLAG', 'PART_STATUS_CODE', 'PART_MOVEMENT_CODE', 'SUB_MOVEMENT_CODE',
'FULL_MOVEMENT_CODE', 'FACTORY_PACK_QTY', 'OH_UNIT_QTY', 'ON_ORDER_UNIT_QTY', 'UNIT_COST']
csv_writer = csv.DictWriter(new_file, fieldnames = fieldnames)
csv_writer.writeheader()
for line in csv_reader:
for lines in new_file:
if lines['SKU_NUMBER'] and lines['PART_STOCKING_FLAG'] == 'Y':
continue
if line['WHS_NUMBER'] == 'NCI' and line['PART_STOCKING_FLAG'] == 'Y':
csv_writer.writerow(line)
elif line['WHS_NUMBER'] != 'NCI' and line['SKU_NUMBER'] and line['PART_STOCKING_FLAG'] == 'Y':
True
continue
else:
csv_writer.writerow(line)
1 ответ
У вас проблема с формулировкой ваших условий. Состояние:
if lines['SKU_NUMBER'] and lines['PART_STOCKING_FLAG'] == 'Y':
не проверяет, что и SKU_NUMBER
, и PART_STOCKING_FLAG
должны равняться Y
но он проверяет, что PART_STOCKING_FLAG
равно Y
и SKU_NUMBER
является логическим True
, то есть не является пустой строкой, False
, None
и т. д. Так что в вашем случае будут записаны строки с PART_STOCKING_FLAG='Y'
, а не пустые SKU_NUMBER
.
Если вы хотите проверить, что SKU_NUMBER
и PART_STOCKING_FLAG
являются Y
, вы должны сделать:
if lines['SKU_NUMBER']== 'Y' and lines['PART_STOCKING_FLAG'] == 'Y':
pass
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.