Alan adlarını dosyadan çıkarmak için csv.DictReader
numaralı telefonu istiyorum. The docs demek "FieldNames parametresi atlanırsa, csvfile dosyasının ilk satırındaki değerler alan adları olarak kullanılır.", ama benim durumumda, ilk satır, bir başlık ve isimleri içeren 2. sıra kontaints.Ön başlık satırları csv.DictReader ile nasıl atlanır?
next(reader)
, Python 3.2 skip a line in csv.DictReader uyarınca uygulayamıyorum çünkü alan adı ataması, okuyucuyu başlatırken gerçekleşiyor (ya da yanlış yapıyorum).
CanVec v1.1.0,,,,,,,,,^M
Entity,Attributes combination,"Specification Code
Point","Specification Code
Line","Specification Code
Area",Generic Code,Theme,"GML - Entity name
Shape - File name
Point","GML - Entity name
Shape - File name
Line","GML - Entity name
Shape - File name
Area"^M
Amusement park,Amusement park,,,2260012,2260009,LX,,,LX_2260009_2^M
Auto wrecker,Auto wrecker,,,2360012,2360009,IC,,,IC_2360009_2^M
Kodum:
f = open(entities_table,'rb')
try:
dialect = csv.Sniffer().sniff(f.read(1024))
f.seek(0)
reader = csv.DictReader(f, dialect=dialect)
print 'I think the field names are:\n%s\n' % (reader.fieldnames)
i = 0
for row in reader:
if i < 20:
print row
i = i + 1
finally:
f.close()
Güncel sonuçları:
I think the field names are:
['CanVec v1.1.0', '', '', '', '', '', '', '', '', '']
İstenilen sonuç:
I think the field names are:
['Entity','Attributes combination','"Specification Code Point"',...snip]
CSVfile (Excel 2010, original source ihraç)
Sadece ilk satırı silmek ve devam etmek için uygun olacağını fark ediyorum, ancak eldeki müdahaleyi en aza indirgeyebildiğim kadar in situ veriyi sadece okumak için yakınlaşmaya çalışıyorum.
Bu, bir alanın kesin bir ismini (makul bir beklenti) bilmesi koşuluyla, daha esnek bir çözümdür. Teşekkürler. –