Я пытаюсь удалить повторяющиеся записи из данных, которые выглядят следующим образом:Ошибка: в списке нет атрибута add()?
name phone email website
Diane Grant Albrecht M.S.
Lannister G. Cersei M.A.T., CEP 111-222-3333 [email protected] www.got.com
Argle D. Bargle Ed.M.
Sam D. Man Ed.M. 000-000-1111 [email protected] www.daManWithThePlan.com
Sam D. Man Ed.M.
Sam D. Man Ed.M. 111-222-333 [email protected] www.daManWithThePlan.com
D G Bamf M.S.
Amy Tramy Lamy Ph.D.
Так что это выглядит следующим образом:
name phone email website
Diane Grant Albrecht M.S.
Lannister G. Cersei M.A.T., CEP 111-222-3333 [email protected] www.got.com
Argle D. Bargle Ed.M.
Sam D. Man Ed.M. 000-000-1111, 111-222-333 [email protected] www.daManWithThePlan.com
D G Bamf M.S.
Amy Tramy Lamy Ph.D.
Вот мой код:
from collections import defaultdict
import csv
import re
input = open('ieca_first_col_fake_text.txt', 'rU')
# default to empty set for phone, email, website, area, degrees
extracted_data = defaultdict(lambda: [set(), set(), set()])
for row in input:
for index, value in enumerate(row):
name = row[0]
data = extracted_data[name].add(row)
for row in data: print row
I получить эту ошибку:
AttributeError: 'list' object has no attribute 'add'
logout
UPDATE:
from collections import defaultdict
import csv
import re
input = open('ieca_first_col_fake_text.txt', 'rU')
input_r = csv.reader(input, delimiter = '\t')
# default to empty set for phone, email, website, area, degrees
extracted_data = defaultdict(lambda: [set(), set(), set()])
data = []
# Index on the name and then for that name add the rest of the information.
for row in input_r:
data_set = extracted_data[row[0]]
for index, value in enumerate(row[1:]):
data_set[index].add(value)
print data_set
выход:
[set(['']), set(['']), set([''])]
logout
Должен ли я разделить строку, если она разделена на вкладку? – goldisfine
'.split()' работает в * любом * пробеле, включая вкладки. –
@goldisfine: Это не так, предыдущий ответчик не знал, какой формат вы использовали. Комментарий над ним читается * Предположим, что split() возвращает ... *. –