试图找到一种方法来努力,任何帮助都会很棒。
我有一个很长的字符串 - 这是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很新,非常感谢帮助。我希望它只能在之前或之后打印部件号而不是所有其他文本。
答案 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]
希望这有帮助。