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

Python: extracting text from strings using a key phrase

努力寻找一种方法来做到这一点,任何帮助都会很棒。

我有一个很长的字符串——它是标题字段。这是一些示例。

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 的新手,非常感谢您的帮助。我希望它只打印部件号而不是之前或之后的所有其他文本。

您 may/could 使用 .split() 函数。它的作用是将以空格分隔的部分文本拆分为列表。

要按照您想要的方式执行此操作,我会创建一个新变量(随便命名);尽管对于此示例,让我们使用 titleSplitList。 (因为这个变量等于 titleSplitList = Title.split()

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

PartNumber = titleSplitList[1]

希望这对您有所帮助。

这是使用 regular expression 的明智时机。看起来零件号由大写字母、连字符和数字组成,所以这应该有效:

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

如果它得到的字符串不包含看起来像零件号的内容,这将引发错误,因此您可能需要添加一些检查以确保 re.search 不 return Nonegroups 不是 return 空元组。

您要查找的内容称为正则表达式,已在 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- 到下一个空白字符的所有

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

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

AIR-LAP1142N-A-K9