SORU
5 HAZİRAN 2010, CUMARTESİ


Yazı Python ile DictWriter'in csv modülü ile header

Bir csv var varsayalım.DictReader nesne ve bir CSV dosyası olarak yazmanızı istiyorum. Bunu nasıl yapabilirim?

Yazma biliyorumsatırbu gibi:

dr = csv.DictReader(open(f), delimiter='\t')
# process my dr object
# ...
# write out object
output = csv.DictWriter(open(f2, 'w'), delimiter='\t')
for item in dr:
  output.writerow(item)

Ama nasıl kullanılır dahil edebilir miyim?

CEVAP
5 HAZİRAN 2010, CUMARTESİ


Düzenleme:
2.7 / 3.2 orada a new writeheader() method. Ayrıca, John Machin cevap başlık satırı yazmak daha basit bir yöntem sağlar.
writeheader() yöntemi 2.7 / 3.2 şimdi kullanarak örnek basit:

from collections import OrderedDict
ordered_fieldnames = OrderedDict([('field1',None),('field2',None)])
with open(outfile,'wb') as fou:
    dw = csv.DictWriter(fou, delimiter='\t', fieldnames=ordered_fieldnames)
    dw.writeheader()
    # continue on to write data

Başlatmasını DictWriter kullanılır bir tartışma gerektirir.
the documentation:

Kullanılır parametre tanımlar hangi değerleri sırası sözlük writerow geçti() yöntem csvfile yazılır.

Başka bir deyişle: Kullanılır argüman Python dicts doğal olarak sıralanmamış gerekli çünkü.
Aşağıda dosyası için başlık ve veri yazmak istiyorum nasıl bir örnek.
Not: 8* *deyimi 2.6 eklendi. Eğer 2.5 kullanıyorsanız: from __future__ import with_statement

with open(infile,'rb') as fin:
    dr = csv.DictReader(fin, delimiter='\t')

# dr.fieldnames contains values from first row of `f`.
with open(outfile,'wb') as fou:
    dw = csv.DictWriter(fou, delimiter='\t', fieldnames=dr.fieldnames)
    headers = {} 
    for n in dw.fieldnames:
        headers[n] = n
    dw.writerow(headers)
    for row in dr:
        dw.writerow(row)

@FM bir yorum bahseder gibi, başlık-yazı bir astar için, örneğin yoğunlaşmak

with open(outfile,'wb') as fou:
    dw = csv.DictWriter(fou, delimiter='\t', fieldnames=dr.fieldnames)
    dw.writerow(dict((fn,fn) for fn in dr.fieldnames))
    for row in dr:
        dw.writerow(row)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ehowhome

    ehowhome

    22 NİSAN 2009
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • Chaîne de TheMoustic

    Chaîne de T

    5 Kasım 2006