2016-03-30 27 views
1

Bir listeyi nasıl alacağımı anlamaya çalışıyorum ve csv dosyasımda yeni bir sütun oluşturmak için bunu kullanıyorum. Fikir bir cvs dosyası var, bir liste oluşturmak için her satırın son öğeyi aldım, karıştırdı ve sonra dosyanın sonuna eklemek gerekiyor.Bir CSV dosyasında yeni bir sütun oluşturma

Karşılaştığım bazı sorunlar ama 'düşünüyorum' düzeltildi: Python dizelere eklenmeyecek, böylece int olarak değiştirdim. . Ne ​​var bugüne kadar sütun başlığını çıkarma ve yeniden eklemeden

geçerli:

def fun(): 
    import csv 
    import random 

    f = open('CSVFUN.csv') 
    csv_f = csv.reader(f) 
    ISI = [] 

    for line in csv_f: 
     ISI.append(line[4]) 
    ISI = ISI[1:] 
    random.shuffle(ISI) 
    delay = [int(i) for i in ISI] 
    print(delay) 

    with open('CSVFUN.csv','r') as csvinput: 
     with open('CSVOUTPUT.csv','w') as csvoutput: 
      writer = csv.writer(csvoutput, lineterminator='\n') 
      reader = csv.reader(csvinput) 

      for row in reader: 
       if row[0] == 'practicesentence': 
        writer.writerow(row+['FINALaudioDelay']) 
       else: 
        for i in delay: 
         writer.writerow(row+[delay[i]]) 

ben şimdi yaşıyorum sorunu benim son else gecikme listemde yineleme olduğunu düşünüyorum ve listenin her öğesini bir satırdaki her öğeye ekleyerek. Yani madde 1 8 gecikme alıyor, madde 2 8 gecikme oluyor, vb.

İstediğim şey, öğe 1'in ilk gecikme, ikinci gecikme ile öğe 2'ye gidip gelmesidir. Sonra .kodunuz

aptal hata çeşit yapma gibi hissediyorum ama sadece ne olduğunu çözemiyorum ....

cevap

0

Eğer delay i'inci elemanını erişmek istiyorsanız, doğru. Ancak, for i in delay derken, i zaten delay öğesinin bir öğesidir. Son satırda sadece i için delay[i]'u değiştirmeyi deneyin. list sadece endeksleri 0 ile öğesi vardır çünkü

list = [5, 4] 
for i in list: 
    print list[i] 

Bu çalışmaz: Eğer bunu yaparsan,

5 
4 

Ancak: Bir örnek dönecektir O

list = [5, 4] 
for i in list: 
    print i 

altındadır 1, 4 ve 5 değil.

İlgili konular