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 None
和 groups
不是 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
努力寻找一种方法来做到这一点,任何帮助都会很棒。
我有一个很长的字符串——它是标题字段。这是一些示例。
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 None
和 groups
不是 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