2016-06-02 3 views
1

Я почти пишу программу, которая может выполнять несколько задач в файле GEDCOM (файл, содержащий информацию о вашем генеалогическом древе).Поиск уникального слова в строке

У меня есть только одна проблема; есть некоторые строки, подобные этому:

0 @[email protected] FAM 
1 FAMC @[email protected] 
1 FAMS @[email protected] 

Теперь я хочу извлечь код, который начинается с @ и заканчивается символом @.

я использовал:

if 'FAM' in line: 
    var = line[1:6] 
    ... 

Но когда я запускаю программу она выводит все строки с FAMC и FAMS, как эти слова имеют FAM внутри них.

Как я могу извлечь строки только для соответствия FAM? Спасибо.

+0

Пожалуйста, добавьте ваш ожидаемый результат – donkopotamus

+0

Вы пытались с помощью регулярного выражения? – bhansa

+0

NO I havent попробовал правильное выражение –

ответ

1

Вы можете сделать это с помощью регулярного выражения (словоразделами) и :

lines = [ 
    "0 @[email protected] FAM", 
    "1 FAMC @[email protected]", 
    "1 FAMS @[email protected]" 
] 

for line in lines: 
    if re.search(r'\bFAM\b', line): 
     var = line 
     print var 

"граница слова" A (\b) знаменует собой начало или конец слова.

Мы также можем использовать re.search() извлечь код семейства, в то же время:

for line in lines: 
    search = re.search(r'@([A-Z0-9]+)@\s*\bFAM\b', line) 
    if search: 
     code = search.group(1) 
     print code 
0

Вы могли бы использовать это:

for l in lines: 
    for a in l: 
     if(a[0]=="@" and a[-1]=="@"): 
     print(a) 
Смежные вопросы