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,仅此而已)
答案 0 :(得分: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
仅将pandas
与str.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
再次使用正则表达式,但这一次找到您的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