網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
讓我們看看如何使用 Python 從文件中提取 IP 地址。
算法 :??
- 為正則表達(dá)式導(dǎo)入 re 模塊。
- 使用 open() 函數(shù)打開文件。
- 讀取文件中的所有行并將它們存儲(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é)
原文鏈接:https://blog.csdn.net/allway2/article/details/122548538
相關(guān)推薦
- 2022-08-28 樹莓派設(shè)置wifi自動(dòng)連接
- 2022-03-30 C++歸并排序算法詳解_C 語(yǔ)言
- 2022-05-25 Flutter?StaggeredGridView實(shí)現(xiàn)瀑布流效果_Android
- 2022-06-01 Apache?Hudi靈活的Payload機(jī)制硬核解析_服務(wù)器其它
- 2022-04-21 Docker - Error: Error response from daemon: No com
- 2022-04-20 iOS實(shí)現(xiàn)多控制器切換效果_IOS
- 2022-07-03 python使用open函數(shù)對(duì)文件進(jìn)行處理詳解_python
- 2022-12-21 Flutter?runApp到渲染上屏分析詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支