使用 Python 从描述中提取服务器名称 ip



我的数据帧中有一个名为"描述"的列。我在该列中有如下文本。

描述

Summary: SD1: Low free LOG space in database saptempdb: 2.99% Date: 01/01/2017 Severity: Major Reso
Summary: SD1: Low free DATA space in database 10:101:101:1 2.99% Date: 01/01/2017 Severity: Major Res
Summary: SAP SolMan Sys=SM1_SNG01AMMSOL04,MO=AGEEPM40,Alert=Columnstore Unloads,Desc= ,Cat=Exception

如何从上述描述中提取服务器名称或IP。我有大约 10000 行。

我写了如下,将语义拆分为逗号分隔。现在我需要过滤服务器名称或 ips

    df['sentsplit'] = df["Description"].str.split(" ")
    print df

您询问的一般情况是"如何解析此输入? 那么任务是你可以利用你的输入的哪些知识来回答你的问题? 所有线条都遵循一种还是几种形式? 您能否对主机名或 IP 地址在每行上的位置进行任何限制?

根据您的输入,这是我可能应用的正则表达式。 又快又脏,不优雅,但如果只是10000行,一次性工作,谁在乎呢? 它是功能性的:

database (d+:d+:d+:d+)|database (w+)|Sys=([^, ]+),

此正则表达式假定 IP 地址将始终在单词 database 之后,前面有一个空格,或者主机名将位于单词 database, OR that the hostname will be preceded by Sys= and followed by a ,' 或空格之后。

显然,请根据您的目的进行测试,并酌情进行微调。 在 Python API 中:

host_or_ip_re = re.compile(r'database (d+:d+:d+:d+)|database (w+)|Sys=([^, ]+),')
for line in log:
    m = host_or_ip_re.searc( line )
    if m:
        print m.groups()

总是让我感到困惑的细节是matchsearch之间的区别。 匹配字符串开头的匹配项

最新更新