教你使用Python從文件中提取IP地址
讓我們看看如何使用 Python 從文件中提取 IP 地址。
算法 :
- 為正則表達(dá)式導(dǎo)入 re 模塊。
- 使用 open() 函數(shù)打開(kāi)文件。
- 讀取文件中的所有行并將它們存儲(chǔ)在列表中。
- 聲明 IP 地址的模式。正則表達(dá)式模式是:
r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'- 對(duì)于列表中的每個(gè)元素,使用 search() 函數(shù)搜索模式,將 IP 地址存儲(chǔ)在列表中。
- 顯示包含 IP 地址的列表。
要處理的文件是 test.txt :

test.txt
代碼
# importing the module
import re
# opening and reading the file
with open('f:/test.txt', encoding='utf-8') as fh:
fstring = fh.readlines()
# declaring the regex pattern for IP addresses
pattern = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})')
# initializing the list object
lst = []
# extracting the IP addresses
for line in fstring:
match = pattern.search(line)
if match is not None:
lst.append(match[0])
else:
lst.append(None)
# displaying the extracted IP addresses
print(lst)輸出 :

上面的 Python 程序顯示文件中存在的任何類型的 IP 地址。我們還可以顯示有效的IP 地址。
有效 IP 地址的規(guī)則:
- 數(shù)字應(yīng)在 0-255 范圍內(nèi)
- 它應(yīng)該由 4 個(gè)以“.”分隔的單元格組成。
有效 IP 地址的正則表達(dá)式是:
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5] |2[0-4][0-9]|[01]?[0-9][0-9]?)
用于有效 IP 的正則表達(dá)式說(shuō)明:
由于我們不能在正則表達(dá)式中使用 0-255 范圍,我們將其分為 3 組:
- 25[0-5] - 表示從 250 到 255 的數(shù)字
- 2[0-4][0-9] – 表示從 200 到 249 的數(shù)字
- [01]?[0-9][0-9]?- 表示從 0 到 199 的數(shù)字
要處理的文件是 test2.txt :
000.0000.00.00 192.168.1.1 912.465.123.123 192.168.4.164 69.168.4.226 32.89.31.164 67.168.3.227
代碼:
# importing the module
import re
# opening and reading the file
with open('test2.txt', encoding='utf-8') as fh:
string = fh.readlines()
# declaring the regex pattern for IP addresses
pattern = re.compile('''((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)''')
# initializing the list objects
valid = []
invalid = []
# extracting the IP addresses
for line in string:
line = line.rstrip()
result = pattern.search(line)
# valid IP addresses
if result:
valid.append(line)
# invalid IP addresses
else:
invalid.append(line)
# displaying the IP addresses
print("Valid IPs")
print(valid)
print("Invalid IPs")
print(invalid)輸出 :
"C:\Program Files\Python39\python.exe" C:/Users/Administrator/PycharmProjects/pythonProject8/ExtractIP2.py
Valid IPs
['192.168.1.1', '192.168.4.164', '69.168.4.226', '32.89.31.164', '67.168.3.227']
Invalid IPs
['000.0000.00.00', '912.465.123.123']
進(jìn)程已結(jié)束,退出代碼為 0
補(bǔ)充:python提取一段字符串中的ip地址
代碼如下:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import re
import os
ip_str = os.popen('cat /root/bin/ips').read()
ipList = re.findall( r'[0-9]+(?:\.[0-9]+){3}',ip_str)
print(ipList)有時(shí)候從上游收到的ip地址很多是夾雜其他字符的,比如逗號(hào),分號(hào),中文字符,英文字符等等,需要提取純粹的ip地址,可以使用這種方式。已經(jīng)默認(rèn)給出的字符串包含的都是正確的ip地址。如果想在確認(rèn)ip地址是否合法,可以對(duì)列表ipList進(jìn)行遍歷,剔除不合法的ip元素。
總結(jié)
到此這篇關(guān)于使用Python從文件中提取IP地址的文章就介紹到這了,更多相關(guān)Python提取IP地址內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解python中@classmethod和@staticmethod方法
在python類當(dāng)中,經(jīng)常會(huì)遇到@classmethod和@staticmethod這兩個(gè)裝飾器,那么到底它們的區(qū)別和作用是啥子呢?本文結(jié)合場(chǎng)景分析給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧2022-10-10
python中Switch/Case實(shí)現(xiàn)的示例代碼
本篇文章主要介紹了python中Switch/Case實(shí)現(xiàn)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Python能干什么、Python主要應(yīng)用于哪些方面
無(wú)論是從入門級(jí)選手到專業(yè)級(jí)選手都在做的爬蟲(chóng),還是Web程序開(kāi)發(fā)、桌面程序開(kāi)發(fā)還是科學(xué)計(jì)算、圖像處理, Python都可以勝任。Python為我們提供了非常完善的基礎(chǔ)代碼庫(kù),覆蓋了網(wǎng)絡(luò)、文件、GUI、 數(shù)據(jù)庫(kù)、文本等大量?jī)?nèi)容。用Python開(kāi)發(fā),許多功能不必從零編寫2023-06-06
30秒輕松實(shí)現(xiàn)TensorFlow物體檢測(cè)
這篇文章主要為大家詳細(xì)介紹了30秒輕松實(shí)現(xiàn)TensorFlow物體檢測(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Django 前后臺(tái)的數(shù)據(jù)傳遞的方法
本篇文章主要介紹了Django 前后臺(tái)的數(shù)據(jù)傳遞的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Python實(shí)現(xiàn)合并兩個(gè)有序鏈表的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)合并兩個(gè)有序鏈表的方法,涉及Python操作鏈表節(jié)點(diǎn)的遍歷、判斷、添加等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
pycharm專業(yè)版遠(yuǎn)程登錄服務(wù)器的詳細(xì)教程
這篇文章主要介紹了pycharm專業(yè)版遠(yuǎn)程登錄服務(wù)器的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09

