Python:使用关键短语从字符串中提取文本

时间:2015-06-19 21:47:14

标签: python string key

试图找到一种方法来努力,任何帮助都会很棒。

我有一个很长的字符串 - 这是Title字段。以下是一些样本。

AIR-LAP1142N-A-K
AIR-LP142N-A-K
Used Airo 802.11n Draft 2.0 SingleAccess Point AIR-LP142N-A-9
Airo AIR-AP142N-A-K9 IOS Ver 15.2
MINT Lot of (2) AIR-LA112N-A-K9 - Dual-band-based 802.11a/g/n
Genuine Airo 112N  AP AIR-LP114N-A-K9 PoE
Wireless AP AIR-LP114N-A-9  Airy 50 availiable

我需要从标题中提取部件号并将其分配给名为“PartNumber”的变量。部件号始终以字符'AIR - '开头。

所以例如 -

Title = ‘AIR-LAP1142N-A-K9 W/POWER CORD’
PartNumber = yourformula(Title)

Print (PartNumber)将输出AIR-LAP1142N-A-K9

我对python很新,非常感谢帮助。我希望它只能在之前或之后打印部件号而不是所有其他文本。

4 个答案:

答案 0 :(得分:3)

您正在寻找的是正则表达式,并在re module中实现。例如,你需要写一些类似的东西:

>>> import re
>>> def format_title(title):
...     return re.search("(AIR-\S*)", title).group(1)
>>> Title = "Cisco AIR-LAP1142N-A-K9 W/POWER CORD"
>>> PartNumber = format_title(Title)
>>> print(PartNumber)
AIR-LAP1142N-A-K9

\S可确保您将所有AIR-与下一个空白字符相匹配。

答案 1 :(得分:2)

这是使用regular expression的合理时间。看起来部件号由大写字母,连字符和数字组成,因此这应该有效:

import re
def extract_part_number(title):
    return re.search(r'(AIR-[A-Z0-9\-]+)', title).groups()[0]

如果它获得的字符串不包含看起来像部件号的内容,则会抛出错误,因此您可能希望添加一些检查以确保re.search不返回{{ 1}}和None不返回空元组。

答案 2 :(得分:2)

def yourFunction(title):
    for word in title.split():
        if word.startswith('AIR-'):
            return word

>>> PartNumber = yourFunction(Title)
>>> print PartNumber

AIR-LAP1142N-A-K9

答案 3 :(得分:0)

您可以/可以使用.split()功能。这样做是因为它会将用空格分隔的部分文本拆分成一个列表。

要按照你想要的方式做到这一点,我会创建一个新的变量(命名为what);虽然在这个例子中,让我们选择titleSplitList。 (此变量等于titleSplitList = Title.split()

从这里,您知道您尝试检索的文本部分是titleSplitList的第二项,因此您可以通过以下方式将其分配给新变量:

PartNumber = titleSplitList[1]

希望这有帮助。