2016-03-31 30 views
0

DÜZENLEME kümelerinin bir listesini yazın. DÜZENLE: Kümeleri kurmak için kullanılan setlere benziyordu ve liste bu dicts listesiydi. @ That1Guy, DictWriter'in sorunu çözdüğünü söyleyerek doğru cevabı verdi. Nasıl Setin ilk yarısı sütun adını belirtir bir CSV bunu yazmak ve değer ikinci doCSV - Python

{'dns-a': '93.184.216.34', 'domain-name': 'example.com', 'fuzzer': 'Original*'} 
{'dns-a': '54.174.149.30', 'domain-name': 'examplea.com', 'fuzzer': 'Addition'} 
{'domain-name': 'exampleb.com', 'fuzzer': 'Addition'} 
{'dns-a': '104.130.124.96', 'domain-name': 'axample.com', 'fuzzer': 'Bitsquatting'} 
{'domain-name': 'mxample.com', 'fuzzer': 'Bitsquatting'} 
{'dns-a': '52.0.22.168', 'domain-name': 'exarnple.com', 'fuzzer': 'Homoglyph'} 
{'dns-a': '64.57.183.2', 'domain-name': 'examp1e.com', 'fuzzer': 'Homoglyph'} 
{'domain-name': 'exampl-e.com', 'fuzzer': 'Hyphenation'} 
{'domain-name': 'exakmple.com', 'fuzzer': 'Insertion'} 

:

aşağıdaki verileri içeren setler listesi var? Excel'de açmak Örneğin, bu gibi görünmelidir: Sen sets yok

dns-a   domain-name fuzzer 
93.184.216.34 example.com Original 
54.174.149.30 examplea.com Addition 
       exampleb.com Addition 
+0

Bunlar, sözlükler değil, kümelerdir ve doğal olarak sırasızdırlar, bu nedenle sırayla görünmelerine bile güvenemezsiniz. Sadece bir tuş sırasını seçin, her bir anahtarı, her tuşun, virgülle ayrılmış değerlerle tanımladığınız sıraya göre sorgulamasını sağlayın. –

+0

Akılda kalıcı değil ama bu 9 ayrı sözlükler var - – jDo

+3

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

cevap

2

, sen dicts var. Bu durumda, csv modülünde DictWriter sınıfını kullanmalısınız. Dokümanlar

:

düzenli yazar gibi çalışır ancak çıkış sıraları üzerine sözlükleri eşleyen bir nesne oluşturun.

import csv 

with open('names.csv', 'w') as csvfile: 
    fieldnames = ['first_name', 'last_name'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

    writer.writeheader() 
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'}) 
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'}) 
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'}) 
0

Sen writerows yerine writerow kullanabilirsiniz. Sizin durumunuz:

import csv 

data = [{'dns-a': '93.184.216.34', 'domain-name': 'example.com', 'fuzzer': 'Original*'}, 
     {'dns-a': '54.174.149.30', 'domain-name': 'examplea.com', 'fuzzer': 'Addition'}, 
     {'domain-name': 'exampleb.com', 'fuzzer': 'Addition'}, 
     {'dns-a': '104.130.124.96', 'domain-name': 'axample.com', 'fuzzer': 'Bitsquatting'}, 
     {'domain-name': 'mxample.com', 'fuzzer': 'Bitsquatting'}, 
     {'dns-a': '52.0.22.168', 'domain-name': 'exarnple.com', 'fuzzer': 'Homoglyph'}, 
     {'dns-a': '64.57.183.2', 'domain-name': 'examp1e.com', 'fuzzer': 'Homoglyph'}, 
     {'domain-name': 'exampl-e.com', 'fuzzer': 'Hyphenation'}, 
     {'domain-name': 'exakmple.com', 'fuzzer': 'Insertion'}] 

with open('data.csv', 'w') as data_csv: 
    dict_writer = csv.DictWriter(data_csv, data[0].keys()) 
    dict_writer.writeheader() 
    dict_writer.writerows(data) 
İlgili konular