第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查字符串是否與python中的IP地址模式匹配?

檢查字符串是否與python中的IP地址模式匹配?

哆啦的時光機 2019-09-02 17:14:55
檢查字符串是否與某個模式匹配的最快方法是什么?正則表達式是最好的方法嗎?例如,我有一堆字符串,想要檢查每一個字符串以查看它們是否是有效的IP地址(在這種情況下有效意味著正確的格式),是使用正則表達式執(zhí)行此操作的最快方法嗎?或者有更快的東西像字符串格式或其他東西。這樣的事情是我到目前為止所做的:for st in strs:    if re.match('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', st) != None:       print 'IP!'
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

看起來您正在嘗試驗證IP地址。正則表達式可能不是最好的工具。


如果您想接受所有有效的IP地址(包括您可能甚至不知道的某些地址都有效),那么您可以使用IPy (源):


from IPy import IP

IP('127.0.0.1')

如果IP地址無效,則會引發(fā)異常。


或者你可以使用socket (來源):


import socket

try:

    socket.inet_aton(addr)

    # legal

except socket.error:

    # Not legal

如果你真的只想將IPv4與4個小數(shù)部分匹配,那么你可以在dot上進行拆分并測試每個部分是0到255之間的整數(shù)。


def validate_ip(s):

    a = s.split('.')

    if len(a) != 4:

        return False

    for x in a:

        if not x.isdigit():

            return False

        i = int(x)

        if i < 0 or i > 255:

            return False

    return True

請注意,您的正則表達式不會執(zhí)行此額外檢查。它將接受999.999.999.999作為有效地址。


查看完整回答
反對 回復 2019-09-02
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

我通常是極少數(shù)堅持捍衛(wèi)正則表達式的Python專家之一(他們在Python社區(qū)中聲名狼借),但這不是其中之一 - 接受(比方說)'333.444.555.666'作為“IP地址”是真的太差了,如果你需要的RE匹配后做更多的檢查,多使用稀土的一點是無論如何丟失。所以,我衷心地第二個@Mark的建議:IPy的普遍性和優(yōu)雅(如果你想要支持IPv6?。?,字符串操作和int檢查,如果你只需要IPv4(但是,請考慮一下這個限制,然后再想一想 - - IPv6的的時間的方式來- )!


def isgoodipv4(s):

    pieces = s.split('.')

    if len(pieces) != 4: return False

    try: return all(0<=int(p)<256 for p in pieces)

    except ValueError: return False

我寧愿這樣做而不是一個復雜的RE來匹配0到255之間的數(shù)字! - )


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 876 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號