Как удалить пробел из списка 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 шт):
Убрать то не проблема:
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
Для примера я вывел все телефоны из таблицы.
Заметьте, что если вы сделаете просто список.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 и т.д.
Помог ответ?