Я читаю в csv через csv.DictReader
и пытаюсь заменить любые пустые значения значением None
. DictReader
, кажется, берет файл как экземпляр словарей, где каждая строка CSV является словарем (с которым я в порядке). Однако, когда я пытаюсь выполнить итерацию через строку/словарь по строке/словарю и заменить любые пустые значения (""
) с None
, я, кажется, отклеился. Я ранее написал это как список понимание, как это:условно заменить значение словаря python с пониманием
for row in data:
row = [None if not x else x for x in row]
Но мне нужно, чтобы переключиться на использование словарей, а не списки. Раньше у меня не было опыта в понимании словаря, но когда я пытаюсь расширить его для словарей, я просто не могу заставить его работать. Я думал что-то вдоль линий:
for row in data:
row.values() = [None if not x else x for x in row.values()}
, но я просто получить SyntaxError: invalid syntax.
. Я пробовал много других вещей (слишком много, чтобы перечислить здесь):
for row in data:
row = {k:None for k,v in row if v not v else v}
но это похоже на ту же проблему.
Для справки, мои данные выглядит следующим образом:
{'colour': 'ab6612', 'line': '1', 'name': 'Baker', 'stripe': ''}
{'colour': 'f7dc00', 'line': '3', 'name': '', 'stripe': 'FFFFFF'}
и, в идеале, в конечном итоге, как:
{'colour': 'ab6612', 'line': '1', 'name': 'Baker', 'stripe': None}
{'colour': 'f7dc00', 'line': '3', 'name': None, 'stripe': 'FFFFFF'}
спасибо всем, {к: (v, если не против еще None) для к, v в строке .items()} был именно тем, что я искал. Я не понимал, что могу вложить (v if v else None) вот так. Ценить это. – jhole89