it-swarm-ja.tech

python csvヘッダー

アップロードと一致させようとしているcsvヘッダーのセットがあります。それは実際には機能していません。すべてのヘッダーが必要なわけではありません。ファイルの内容と一致させる必要があります。

reader = csv.DictReader(open(PathFile))
headers = reader.fieldnames
for header in sorted(set(headers)):
     if (header == 'ip') or (header == 'IP'):
         print  "IP found in Header"

この場合、IPは見つかりません。

for row in reader:
     if row.get('IP'):
         print  "IP found in Row"

二度と見つかりません。私はこのサイトで検索しました-ありました:

IP = row.get('IP', None)

それもうまくいきませんでした。

これは私がテストに使用しているファイルです:

Email, IP, Name, City, State, Zip, country, garbage
[email protected], 34.4.34.34,Mr GH, chicago, il ,60601, us,erw ewr 
[email protected], 34.45.23.34, Mr 5t,NY,NY,10101, us, er
17
bocca

編集内容に基づいて、コンマの後に 最初のスペースをスキップ する必要があります。

これはそれを行う必要があります:

>>> reader = csv.DictReader(open(PathFile),skipinitialspace=True)

何を達成したいのか正確にはわかりませんが、一部の列がCSVであるかどうかを知りたいだけで、すべての行に同じ列があることを確認し、dictリーダーを使用する場合はこれを使用してください

s="""col1,col2,col3
ok,ok,ok
hmm,hmm,hmm
cool,cool,cool"""

import csv

reader = csv.DictReader(s.split("\n"))
print reader.fieldnames
for row in reader:
    for colName in ['col3', 'col4']:
        print "found %s %s"%(colName, colName in row)
    break

出力します

found col3 True
found col4 False

またはこのようなものも機能します

reader = csv.reader(s.split("\n"))
columns = reader.next()
for colName in ['col3', 'col4']:
    print "found %s %s"%(colName, colName in columns)
7
Anurag Uniyal