如何使用正則表達式找到一個ip網絡?python正則表達式子串到熊貓網絡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
需要幫助! 謝謝。
如何使用正則表達式找到一個ip網絡?python正則表達式子串到熊貓網絡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
需要幫助! 謝謝。
正則表達式對此任務過度複雜化。
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(":")
使用矢量化大熊貓方法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
順便說一句,端口號不能是'66666',端口號是範圍在1-65535之間的整數。 – avysk