2015-10-06 94 views
0

所以,這裏是我的問題,我創建了一個我的列表字典,並試圖添加我發現的數據並將其追加到每一行,但它只是追加到同一列相同數據類型。Python CSV追加新行

我怎麼能得到它,所以每個新的append添加到新行。

data_dict = {'contact name': [], 'name': [], 'telephone': [], 'email': [], 
     'mobile': [], 'feedback average': []} 

try: 
     data_dict['telephone'].append(soup.find('span',itemprop='telephone').text) 
    except AttributeError: 
     data_dict['telephone'].append('No telephone') 

print data_dict 
field_names = fn = data_dict.keys() 
with open('./file.csv','w') as csvfile: 
    f = csv.DictWriter(csvfile, fieldnames=fn) 

    f.writeheader() 
    f.writerow(data_dict) 
+1

一個'DictWriter'預計字典列表,而不是列表的字典... – jonrsharpe

+0

我怎麼能那麼希望我的名單呢? thx –

+2

https://docs.python.org/2/library/csv.html#csv.DictWriter – jonrsharpe

回答

0

嘗試是這樣的:

data_dict = {'contact name': [], 'name': [], 'telephone': [], 'email': [], 
    'mobile': [], 'feedback average': []} 

try: 
    data_dict['telephone'].append(soup.find('span',itemprop='telephone').text) 
except AttributeError: 
    data_dict['telephone'].append('No telephone') 

print data_dict 
fn = data_dict.keys() 
with open('./file.csv','w') as csvfile: 
    f = csv.reader(csvfile) 
    for row in f: 
     for i in len(fn): 
      data_dict[fn[i]].append(row[i]) 

這應該爲你工作,如果我得到你的權利。 但是,小心,這需要csv中的一行包含您的字典的元素,正確的順序。

如果不是這種情況,您需要找出哪個值寫在哪個列中,然後將此列的值添加到字典中的列表中。

所以,你會需要更換

for i in len(fn): 
    data_dict[fn[i]].append(row[i]) 

通過

for k in fn: 
    data_dict[k].append(row[columns[k]]) 

,其中,列是包含相同的密鑰data_dict字典,並作爲值的列中的數據特定的密鑰存儲在csv文件中。舉一個例子,列看起來是這樣的:

columns = {'contact name': 1, 'name': 3, 'telephone' : 6, 'email': 7, 'mobile':8, 'feedback average': 2}