ip = a list of ips
ipf = list(filter(lambda x: x if not x.startswith(str(range(257,311))) else None, ip))
これは何かできますか?私はそれをテストし、それは動作しません。 256から始まる「ip」リストからすべてのipsを削除したいと考えています。257. 258. ecc ... to 310.番号の代わりに番号の範囲で開始する
ip = a list of ips
ipf = list(filter(lambda x: x if not x.startswith(str(range(257,311))) else None, ip))
これは何かできますか?私はそれをテストし、それは動作しません。 256から始まる「ip」リストからすべてのipsを削除したいと考えています。257. 258. ecc ... to 310.番号の代わりに番号の範囲で開始する
いいえ、str.startswith()
は範囲をとっていません。
最初の部分を解析して整数としてテストする必要があります。フィルタリングはまた、リスト内包で行わ簡単です:
[ip for ip in ip_addresses if 257 <= int(ip.partition('.')[0]) <= 310]
代替ipaddress
libraryを使用することです。それはipaddress.AddressValueError
例外を除いて、無効なアドレスを拒否します、と255の上には何も始まるアドレスが無効であるため、簡単にあなたの無効なアドレスフィルタリングすることを共同選ぶことができます:有効なIPの
import ipaddress
def valid_ip(ip):
try:
ipaddress.IPv4Address(ip)
except ipaddress.AddressValueError:
return False
else:
return True
[ip for ip in ip_addresses if valid_ip(ip)]
私の場合、私は以下を使用する必要があります:257 <= int(x.partition( '。')[0])<= 310]なら、ipf = – CatchJoul
@Thavivelball:はい;より明確な変数名を使用するには、 'ip'を' ip_addresses'に改名しました。 –
@Thavivelball:サンプル入力データや予想される出力を提供していないので、これ以上はお手伝いできません。 –
部品を0〜255(両端を含む)の範囲内になります。 – thefourtheye