Как удалить пробел из списка CSV?

Есть несколько списков, в них есть пустые значения - ''. Как их убрать? Вот мои списки:

['lastname', 'firstname', 'surname', 'organization', 'position', 'phone', 'email']
['Усольцев Олег Валентинович', '', '', 'ФНС', 'главный специалист – эксперт отдела взаимодействия с федеральными органами власти Управления налогообложения имущества и доходов физических лиц', '+7 (495) 913-04-78', '[email protected]']
['Мартиняхин Виталий Геннадьевич', '', '', 'ФНС', '', '+74959130037', '']
['Наркаев', 'Вячеслав Рифхатович', '', 'ФНС', '', '8 495-913-0168', '']
['Мартиняхин', 'Виталий', 'Геннадьевич', 'ФНС', 'cоветник отдела Интернет проектов Управления информационных технологий', '', '', '']
['Лукина Ольга Владимировна', '', '', 'Минфин', '', '+7 (495) 983-36-99 доб. 2926', '[email protected]']
['Паньшин Алексей Владимирович', '', '', 'Минфин', '', '8(495)748-49-73', '[email protected]']
['Лагунцов Иван Алексеевич', '', '', 'Минфин', '', '+7 (495) 913-11-11 (доб. 0792)', '']
['Лагунцов Иван', '', '', '', '', '', '[email protected]']

Ответы (2 шт):

Автор решения: CrazyElf

Убрать то не проблема:

data = [
['lastname', 'firstname', 'surname', 'organization', 'position', 'phone', 'email'],
['Усольцев Олег Валентинович', '', '', 'ФНС', 'главный специалист – эксперт отдела взаимодействия с федеральными органами власти Управления налогообложения имущества и доходов физических лиц', '+7 (495) 913-04-78', '[email protected]'],
['Мартиняхин Виталий Геннадьевич', '', '', 'ФНС', '', '+74959130037', ''],
['Наркаев', 'Вячеслав Рифхатович', '', 'ФНС', '', '8 495-913-0168', ''],
['Мартиняхин', 'Виталий', 'Геннадьевич', 'ФНС', 'cоветник отдела Интернет проектов Управления информационных технологий', '', '', ''],
['Лукина Ольга Владимировна', '', '', 'Минфин', '', '+7 (495) 983-36-99 доб. 2926', '[email protected]'],
['Паньшин Алексей Владимирович', '', '', 'Минфин', '', '8(495)748-49-73', '[email protected]'],
['Лагунцов Иван Алексеевич', '', '', 'Минфин', '', '+7 (495) 913-11-11 (доб. 0792)', ''],
['Лагунцов Иван', '', '', '', '', '', '[email protected]'],
]

new_data = [list(filter(None, item)) for item in data]
print(*new_data, sep='\n')

Вывод:

['lastname', 'firstname', 'surname', 'organization', 'position', 'phone', 'email']
['Усольцев Олег Валентинович', 'ФНС', 'главный специалист – эксперт отдела взаимодействия с федеральными органами власти Управления налогообложения имущества и доходов физических лиц', '+7 (495) 913-04-78', '[email protected]']
['Мартиняхин Виталий Геннадьевич', 'ФНС', '+74959130037']
['Наркаев', 'Вячеслав Рифхатович', 'ФНС', '8 495-913-0168']
['Мартиняхин', 'Виталий', 'Геннадьевич', 'ФНС', 'cоветник отдела Интернет проектов Управления информационных технологий']
['Лукина Ольга Владимировна', 'Минфин', '+7 (495) 983-36-99 доб. 2926', '[email protected]']
['Паньшин Алексей Владимирович', 'Минфин', '8(495)748-49-73', '[email protected]']
['Лагунцов Иван Алексеевич', 'Минфин', '+7 (495) 913-11-11 (доб. 0792)']
['Лагунцов Иван', '[email protected]']

Только ведь по факту это таблица, и когда вы убираете из неё пустые ячейки вы перестаёте понимать, какие данные к какому столбцу у вас относятся.

Если убрать из пятой строки лишний элемент (везде 7 полей, а там 8), можно применить Pandas и получить табличку. с которой дальше и работать:

import pandas as pd

data = [
['lastname', 'firstname', 'surname', 'organization', 'position', 'phone', 'email'],
['Усольцев Олег Валентинович', '', '', 'ФНС', 'главный специалист – эксперт отдела взаимодействия с федеральными органами власти Управления налогообложения имущества и доходов физических лиц', '+7 (495) 913-04-78', '[email protected]'],
['Мартиняхин Виталий Геннадьевич', '', '', 'ФНС', '', '+74959130037', ''],
['Наркаев', 'Вячеслав Рифхатович', '', 'ФНС', '', '8 495-913-0168', ''],
['Мартиняхин', 'Виталий', 'Геннадьевич', 'ФНС', 'cоветник отдела Интернет проектов Управления информационных технологий', '', ''],
['Лукина Ольга Владимировна', '', '', 'Минфин', '', '+7 (495) 983-36-99 доб. 2926', '[email protected]'],
['Паньшин Алексей Владимирович', '', '', 'Минфин', '', '8(495)748-49-73', '[email protected]'],
['Лагунцов Иван Алексеевич', '', '', 'Минфин', '', '+7 (495) 913-11-11 (доб. 0792)', ''],
['Лагунцов Иван', '', '', '', '', '', '[email protected]'],
]

df = pd.DataFrame(data[1:], columns=data[0])
print(df['phone'])

Вывод:

0                +7 (495) 913-04-78
1                      +74959130037
2                    8 495-913-0168
3                                  
4      +7 (495) 983-36-99 доб. 2926
5                   8(495)748-49-73
6    +7 (495) 913-11-11 (доб. 0792)
7                                  
Name: phone, dtype: object

Для примера я вывел все телефоны из таблицы.

→ Ссылка
Автор решения: ПИТОНИСТ версия-3-8

Заметьте, что если вы сделаете просто список.remove(''), то remove не сработает. Значит будем работать не с этим, а с новым списком и выводить его.

data = [
['lastname', 'firstname', 'surname', 'organization', 'position', 'phone', 'email'],
['Усольцев Олег Валентинович', '', '', 'ФНС', 'главный специалист – эксперт отдела взаимодействия с федеральными органами власти Управления налогообложения имущества и доходов физических лиц', '+7 (495) 913-04-78', '[email protected]'],
['Мартиняхин Виталий Геннадьевич', '', '', 'ФНС', '', '+74959130037', ''],
['Наркаев', 'Вячеслав Рифхатович', '', 'ФНС', '', '8 495-913-0168', ''],
['Мартиняхин', 'Виталий', 'Геннадьевич', 'ФНС', 'cоветник отдела Интернет проектов Управления информационных технологий', '', '', ''],
['Лукина Ольга Владимировна', '', '', 'Минфин', '', '+7 (495) 983-36-99 доб. 2926', '[email protected]'],
['Паньшин Алексей Владимирович', '', '', 'Минфин', '', '8(495)748-49-73', '[email protected]'],
['Лагунцов Иван Алексеевич', '', '', 'Минфин', '', '+7 (495) 913-11-11 (доб. 0792)', ''],
['Лагунцов Иван', '', '', '', '', '', '[email protected]']
]
super_data = [x for i in data for x in i  if x ]
print(super_data)

Сначала поймём, что булев тип пустой строки ('') - False. Это нам и поможет.

Мы идём по элементам списка data. Затем проверяем тип каждого элемента вложенных списков. Если это True - добавляем в новый список, иначе нет.

Также моя программа удобна тем, что может удалять не только элементы '', но и False, None, 0 и т.д.

Помог ответ?

→ Ссылка