簡體   English   中英

熊貓正則表達式提取網絡IP地址子字符串

[英]pandas regex to extract network IP address substring

如何使用正則表達式查找IP網絡?

IP 
234.523.213.462:321
21.236.432.123:66666
213.406.421.436:7324

我想

IP                Port 
234.523.213.462   321
21.236.432.123    66666
213.406.421.436   7324

需要幫忙! 謝謝。

使用向量化熊貓方法str.split

df[['IP','Port']] = df.IP.str.split(':', expand=True)
print (df)
                IP   Port
0  234.523.213.462    321
1   21.236.432.123  66666
2  213.406.421.436   7324

使用正則表達式的解決方案(如果只有數字, :. ):

df[['IP','Port']] = df.IP.str.extract('(.*):(.*)', expand=True)
print (df)
                IP   Port
0  234.523.213.462    321
1   21.236.432.123  66666
2  213.406.421.436   7324

使用pd.Series.str.extract

簡單的regex

df.IP.str.extract('(?P<IP>.+):(?P<Port>\d+)', expand=True)

            IP   Port
0  523.213.462    321
1  236.432.123  66666
2  406.421.436   7324

顯式regex

df.IP.str.extract('(?P<IP>\d{1,3}\.\d{1,3}\.\d{1,3}):(?P<Port>\d+)', expand=True)

            IP   Port
0  523.213.462    321
1  236.432.123  66666
2  406.421.436   7324

正則表達式對於此任務過於復雜。

In [1]: "213.406.421.436:7324".split(":")
Out[1]: ['213.406.421.436', '7324']

In [2]: "213.406.421.436:7324".split(":")[0]
Out[2]: '213.406.421.436'

In [3]: "213.406.421.436:7324".split(":")[1]
Out[3]: '7324'

您可以從字符串中獲取IP和端口,如下所示:

ip, port = "213.406.421.436:7324".split(":")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM