2015-06-19 5 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 

Мне нужно вытащить номер детали из заголовка и присвоить его переменной с названием «PartNumber». Номер детали всегда начинается с символов «AIR-».

Так ПРИМЕР-

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

Print (PartNumber) Выведет AIR-LAP1142N-A-K9

Я довольно новыми для питона и был бы весьма признателен за помощью. Я бы хотел, чтобы он ТОЛЬКО печатал номер детали не весь другой текст до или после.

+0

Попробуйте найти регулярное выражение. 'import 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 не возвращает None и groups не возвращает пустой кортеж.

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- до следующего пустого символа.

Смежные вопросы