2015-06-19 82 views
2

努力尋找一種方法來做到這一點,任何幫助將是偉大的。Python:使用關鍵短語從字符串中提取文本

我有一個很長的字符串 - 它是標題字段。這裏有一些樣品。

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 

我需要拉部件號出標題,並將其分配到一個名爲「零件號」變量。部件號將始終以字符'AIR-'開頭。

所以對於示例 -

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

Print (PartNumber)將輸出AIR-LAP1142N-A-K9

我是相當新的Python和將不勝感激幫助。我希望它僅在前後打印部件號而不是所有其他文本。

+0

嘗試查找正則表達式。 '進口re' – vk1011

回答

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

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

AIR-LAP1142N-A-K9 
0

您可以/可以使用.split()函數。它所做的就是將空格分隔的部分分割成一個列表。要做到這一點你想要的方式,我會做一個新的變量(命名爲什麼);儘管對於這個例子,我們來看看titleSplitList。 (凡爲這個變量等於titleSplitList = Title.split()

從這裏,你知道你想要檢索的文本部分是titleSplitList的第二個項目,這樣你就可以通過將其分配到一個新的變量:

PartNumber = titleSplitList[1] 

希望這會有所幫助。

2

這是一個合理的時間使用regular expression。它看起來像部件號由大寫字母,連字符和數字,所以這應該工作:

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

如果它得到一個字符串,它不包含的東西,看起來像這將拋出一個錯誤因此您可能需要添加一些檢查以確保re.search不會返回Nonegroups不會返回空元組。

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-下一個空白字符。