2015-08-27 2 views
1

Пусть У меня есть строка, которая содержит:Python Удалите все строки, начинающимися с определенным словом

ASFksdfasf a 
Oh sadfafas 
Yeasd: asdfaf 
Oh asdfaf 

И я хочу, чтобы удалить строки из строки, которые начинаются с «О». Как именно я подхожу к этому? Сейчас я знаю, что могу сделать что-то в регулярных выражениях, похожее на это:

\b[Oh]\S* 

Но я не уверен, о том, как сохранить этот результат в переменную, и даже тогда, я считаю, что это находит только слова, а не удаляет их ,

+0

Подобно тому, как головки вверх, '/^О */M' является то, что вы ищете ... Я 'd все еще использую ответ @ AvinashRaj. – Sam

+0

@ Вы знаете, как я могу сохранить результат регулярного выражения в переменную? – user2677095

+1

@ user2677095 'reg = r '^ Oh''' if not re.match (reg, stri): ' –

ответ

2

Использование string.startswith функция.

if not string.startswith('Oh'): 

Пример:

>>> s = '''ASFksdfasf a 
Oh sadfafas 
Yeasd: asdfaf 
Oh asdfaf''' 
>>> for line in s.splitlines(): 
    if not line.startswith('Oh'): 
     print(line) 


ASFksdfasf a 
Yeasd: asdfaf 
+0

Могу ли я использовать эту функцию для хранения всех строк, которые не начинаются с «О», в новую переменную? Это не обязательно для моего дела, но было бы полезным прикосновением. – user2677095

+0

Ничего, я думаю, что ваш новый отредактированный пост будет работать нормально. Спасибо! – user2677095

2

Я прокомментировал OP с выражением, которое вы бы использовать, чтобы сделать это, но предложил пойти с @ AvinashRaj отвечают (без регулярных выражений). Вы спросили, как это будет реализовано, и ответ re.sub()!


Демо:

string = '''ASFksdfasf a 
Oh sadfafas 
Yeasd: asdfaf 
Oh asdfaf''' 

import re 
print re.sub(r'^Oh.*\n?', '', string, flags=re.MULTILINE) 

Выходы:.

ASFksdfasf a 
Yeasd: asdfaf 
+0

Отлично, спасибо за головы. Я уверен, что он пригодится в будущем! – user2677095

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