2

非常に大きな .csv ファイル (10GB) があり、タプルのさまざまな基準に基づいて行を抽出したいと考えています。
各行の 4 番目
の列には、特定の IP を持つ行のみを抽出する必要がある IPAdd が含まれています。

私はPythonが初めてで、各タプルIPを反復処理してWYE_Data.csvファイルに書き込む方法を知りたいです。

CSV ファイルの内容サンプルは次のとおりです。

xxx,1234,abc,199.199.1.1,1,fghy,xxx   
xxx,1234,abc,10.10.1.1,1,fghy,xxx   
xxx,1234,abc,144.122.1.1,1,fghy,xxx   
xxx,1234,abc,50.200.50.32,1,fghy,xxx

import csv   
customers = csv.reader(open('data.csv', 'rb'), delimiter=',')    
## This is the line I'm having         issues with   
IPAdd = ('199.199.1.1' or '144.122.1.1' or '22.22.36.22')
csvout = csv.writer(open('WYE_Data.csv', 'ab')) 

for customer in customers:   
    if customer[3] == IPAdd:    
        csvout.writerow(customer)
4

2 に答える 2

1
import csv

look_for = set(['199.199.1.1', '144.122.1.1', '22.22.36.22'])

with open('data.csv','rb') as inf, open('wye_data.csv','wb') as outf:
    incsv = csv.reader(inf, delimiter=',')
    outcsv = csv.writer(outf, delimiter=',')
    outcsv.writerows(row for row in incsv if row[3] in look_for)
于 2012-06-11T16:44:39.533 に答える
1

IP に一致させたい値のリストを使用することをお勧めします。

ips = ['199.199.1.1', '144.122.1.1', '22.22.36.22']

次に、次のように言うことができます。

if customer[3] in ips:
于 2012-06-11T16:03:12.373 に答える