2016-04-26 5 views
1

を打つときにエラーを投げるnetaddr私はPythonの空のCSVセル

City State Zip Latitude Longitude Subnet Wired1 Wired2 Wireless1 Wireless2 Domain Name NAT_DHCP NAT_Wireless 

IPを探して、私は2つの無線ヘッダだけでなく、有線ヘッダ間を見て、次のヘッダーと静的なCSV形式の文書を持っています。

if (addr >= wired1 and addr <= wired2) or (addr >= wireless1 and addr <= wireless2): 
print all header fields. 

ここで、一部の項目には無線範囲や欠落した有線範囲がありません。無線ヘッダに、より具体的に

netaddr.core.AddrFormatError: failed to detect a valid IP address from '' 

:私は次のエラーを取得する

File "script.py", line 175, in myfile 
wireless1 = (int(IPAddress(row['Wireless1']))) 

を今、私は、Dictreaderおよびドキュメントからを使用していることは、空行をスキップすることになっていませんか?私は行をスキップするために使用できる別の方法がありますか?好奇心ならば、ここ

with open('csvfiles/myfile.csv', 'rb') as incsv: 
    reader = csv.DictReader(incsv, delimiter=',') 

は私の変数です:

addr = (int(IPAddress(ip))) 
wired1 = (int(IPAddress(row['Wired1']))) 
wired2 = (int(IPAddress(row['Wired2']))) 
wireless1 = (int(IPAddress(row['Wireless1']))) 
wireless2 = (int(IPAddress(row['Wireless2']))) 

例のcsvライン:

Wired1  Wired2   Wireless1  Wireless2 
10.65.0.0 10.65.239.255 10.65.240.1 10.65.255.254 
10.38.0.0 10.38.239.255  
10.34.0.0 10.34.239.255 10.34.240.1 10.34.255.254 
10.83.0.0 10.83.239.255 
+0

あなたは読んでいるcsvファイルの行をいくつか追加できますか? – Abbas

+0

の範囲が追加されましたが、セキュリティ上の理由から他のすべての情報を保持していました。 –

+0

実際の値を表示できない場合はダミー値を追加してください。問題を再現しやすくなります。 – Abbas

答えて

1

pandasを使用することを検討して、あなたはもっと自分のcsvファイルの多くを操作することができます。

import pandas as pd

df = pd.read_csv('your_file.csv')

#See how does your data looks like in pandas 
print df 

     Wired1   Wired2 Wireless1  Wireless2 
0 10.65.0.0 10.65.239.255 10.65.240.1 10.65.255.254 
1 10.38.0.0 10.38.239.255   NaN   NaN 
2 10.34.0.0 10.34.239.255 10.34.240.1 10.34.255.254 
3 10.83.0.0 10.83.239.255   NaN   NaN 

#Select only the rows where 'Wireless1' is not null 
df[pd.notnull(df['Wireless1'])] 
     Wired1   Wired2 Wireless1  Wireless2 
0 10.65.0.0 10.65.239.255 10.65.240.1 10.65.255.254 
2 10.34.0.0 10.34.239.255 10.34.240.1 10.34.255.254 

#Select only 'Wireless' clolumn where it is not null 
df[pd.notnull(df['Wireless1'])]['Wireless1'] 
0 10.65.240.1 
2 10.34.240.1 
Name: Wireless1, dtype: object 

同様に、あなたはパンダを使用して、より多くの操作を行うことができます。したがって、NULL値がnetaddrに渡されるのを避けることができます。

関連する問題