python, как удалить строки после ключевого слова

Вопрос: Возможный дубликат: Удалить символы в Python Я хочу знать, как удалить строки после ключевого слова в python Я получу строки в txt файле Какой метод я могу использовать для этого. Например: "У меня есть книга для чтения". Я хочу удалить все слова после "книги". Лучший ответ: Чтобы удалить все после первой "книги", включая "книгу":

Вопрос:

Возможный дубликат:
Удалить символы в Python

Я хочу знать, как удалить строки после ключевого слова в python

Я получу строки в txt файле

Какой метод я могу использовать для этого.

Например:

“У меня есть книга для чтения”.

Я хочу удалить все слова после “книги”.

Лучший ответ:

Чтобы удалить все после первой “книги”, включая “книгу”:

s = «I have a book to read.» print(s.partition(«book»)[0])

Чтобы сохранить слово “книга”:

print(».join(s.partition(«book»)[:2]))

Оба работают независимо от того, присутствует ли “книга” в строке или нет.

Ответ №1

Есть несколько способов сделать это:

mystr = “У меня есть книга для чтения”. keyword = ‘book’

Способ 1:

def foo(mystr, keyword): try: i = mystr.index(keyword) return mystr[:i+len(keyword)] except ValueError: return mystr

Способ 2:

def foo(mystr, keyword): i = mystr.find(keyword) if i >= 0: return mystr[:i+len(keyword)] else: return mystr

Способ 3:

def foo(mystr, keyword): return ».join(mystr.partition(keyword)[:2]) Ответ №2

Используйте метод moveng find(), который возвращает индекс первой буквы мира:

str = «i have a book to read» print str[:str.find(«book») + len(«book»)]

Это будет работать только потому, что “строка” существует в строке “У меня есть книга для чтения”. Если это не так, это решение не будет работать должным образом

Ответ №3

Еще один способ сделать это – с помощью re.sub. (Вывод показан чередующимся с кодом.)

txt = ‘I have a book to read’; key=’book’ str = re.sub(key+’.*’, key, txt) str ‘I have a book’ txt = ‘I have a look to read’; key=’book’ str = re.sub(key+’.*’, key, txt) str ‘I have a look to read’ Ответ №4

Regex был бы хорош для этого:

import re m = re.match(‘(.*book)’, line) if m: line = m.group(1)

или

line = re.sub(‘book.*’, ‘book’, line)

Оцените статью
Добавить комментарий