如何从这种格式提取数据的IP地址

时间:2019-06-14 13:40:52

标签: pandas

A列中的行始终具有以下格式:

dns_name (dns-server) Ip_addr_of_the_server, datacenter_location. 

一个例子是:

linux_test (dns-1-intern) 10.10.10.250, Berlin_DC. 

我应该在split()函数中添加什么参数以仅获取IP地址?

结果应为:10.10.10.250(仅是ip add,仅此而已)

2 个答案:

答案 0 :(得分:1)

方法1:

使用带有str.extract的正则表达式来提取列中),之间的字符串:

# Example dataframe
df = pd.DataFrame({'A':['linux_test (dns-1-intern) 10.10.10.250, Berlin_DC']})

df['IP'] = df['A'].str.extract('(?<=\))(.*?)(?=\,)')

                                                   A             IP
0  linux_test (dns-1-intern) 10.10.10.250, Berlin_DC   10.10.10.250

方法2:

仅将pandasstr.find和字符串切片一起使用:

paranthesis = df['A'].str.find(')').values[0]
comma = df['A'].str.find(',').values[0]

df['IP'] = df['A'].str[paranthesis+2:comma]

                                                   A             IP
0  linux_test (dns-1-intern) 10.10.10.250, Berlin_DC   10.10.10.250

方法3

再次使用正则表达式,但这一次找到您的IP地址格式

注意,由于您的IP地址可能不同,这不是很普遍

df['A'].str.extract('([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)')

              0
0  10.10.10.250

答案 1 :(得分:1)

如果一个字符串中有多个IP,请使用AddressOf

findall