2016-04-11 41 views
-1

Bu yüzden bir ödev üzerinde çalışıyorum ve csv dosyası aldığımız ve onu bir sözlüğe dönüştürdüğümüz bir adımı anlamaya çalışıyorum. Benim sınırlamalarımdan biri csv almamaktır. Bir CSV dosyasının bir sözlüke dönüştürülmesiyle ilgili diğer soruları ararken, bunların hepsi csv'yi içe aktarır. Benim CSV dosyası aşağıdaki içeriyorsa Örneğin, (ilk satırı başlıktır):Bir dict dosyasına CSV dosyası

"Headline","Newspaper", "Year Published", "Author" 
"Crash", "New York Times", "2001", "Smith" 
"Fire", "Washington Post", "2010", "Dudley" 
"Addiction", "National Enquirer", "2008", "Kuhn" 

Nasıl csv ithal etmeden Python bir sözlüğüne bu verileri dönüştürmek mümkün sırayla ben ki?

Şu anda üzerinde çalışıyorum, bu parça için ne yapmak istediğimi bildiğimden bu yana sözde kodum var ama nasıl yapacağım konusunda% 100 emin değilim çünkü bu benim ilk hafta dosyalarımı kullanıyor ve sözlükleri birlikte:

with open("foo.csv") as f: 
    # pull header line and split into keys 
    keys = next(f).strip().split(",") 
    # transpose remaining lines 
    values = zip(*(line.strip().split(",") for line in f)) 
    # zip keys and values and create a dict 
    dct = dict(zip(keys, vals) 

aktarılmasını size verecektir:

def read_file(filename): 
    d={} 
    with open(filename , 'r') as f: 
     first_line = f.readline() 
      for line in f: 
       if line.strip().isdigit(): 
       # assign first string in line as key 
        #assign rest of strings in line as value to key in that line as a tuple 
+2

"csv almadan" derken, "csv" modülünü standart kitaplıktan kullanmadan mı kastediyorsunuz? – Chris

+1

SO Bir kod yazma hizmeti değil. Lütfen bunun için kendi kod girişinizi gösterin ve kendi kodunuzda yaşadığınız zorlukları açıklayın. – idjaw

+0

@idjaw Bunu tamamen anlıyorum ve olmasını beklemiyorum. – Nick

cevap

0

Sen başlığındaki anahtarları çektikten sonra kalan satırları devrik olabilir Öğeleri sütun bilge, böylece her bir başlık anahtarı ile eşleşecek.

0

Her satır için bir JSON stil biçimlendirmesi olan sözlük öğeleri içeren bir liste oluşturabilirsiniz.

with open(filename) as f: 
    keys = [val.strip().replace('"', '') for val in f.readline().split(',')] 
    result = [] 
    for line in f: 
     line = [val.strip().replace('"', '') for val in line.split(',')] 
     result.append({key: val for key, val in zip(keys, line)}) 

>>> result 
[{'Author': 'Smith', 
    'Headline': 'Crash', 
    'Newspaper': 'New York Times', 
    'Year Published': '2001'}, 
{'Author': 'Dudley', 
    'Headline': 'Fire', 
    'Newspaper': 'Washington Post', 
    'Year Published': '2010'}, 
{'Author': 'Kuhn', 
    'Headline': 'Addiction', 
    'Newspaper': 'National Enquirer', 
    'Year Published': '2008'}] 
İlgili konular