Python – регулярное выражение – разбиение строки перед словом

Я пытаюсь разделить строку на python перед определенным словом. Например, я хотел бы разбить следующую строку перед "path:" .

  • разделите строку перед "path:"
  • вход: "path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism"
  • выход: ['path:bte00250 Alanine, aspartate and glutamate metabolism', 'path:bte00330 Arginine and proline metabolism']

я пытался

 rx = re.compile("(:?[^:]+)") rx.findall(line) 

Это нигде не разбивает строку. Проблема в том, что значения после "path:" никогда не будут известны, чтобы указать целое слово. Кто-нибудь знает как это сделать?

4 Solutions collect form web for “Python – регулярное выражение – разбиение строки перед словом”

использование регулярного выражения для разделения вашей строки кажется немного переборщиком: метод split() может быть только тем, что вам нужно.

в любом случае, если вам действительно нужно сопоставить регулярное выражение, чтобы разделить вашу строку, вы должны использовать метод re.split() , который разбивает строку на соответствие регулярному выражению.

также, используйте правильное регулярное выражение для расщепления:

 >>> line = 'path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism' >>> re.split(' (?=path:)', line) ['path:bte00250 Alanine, aspartate and glutamate metabolism', 'path:bte00330 Arginine and proline metabolism'] 

группа (?=...) – это выражение lookahead: выражение соответствует пробелу (обратите внимание на пробел в начале выражения), за которым следует строка 'path:' , не потребляя то, что следует за пространством.

Вы могли бы сделать ["path:"+s for s in line.split("path:")[1:]] вместо использования регулярного выражения. (обратите внимание, что мы пропускаем первое совпадение, у которого нет префикса «путь:».

 in_str = "путь: bte00250 Путь метаболизма аланина, аспартата и глутамата: bte00330 Аргинин и пролиновый метаболизм"
 in_list = in_str.split ('путь:')
 print ", path:". join (in_list) [1:]

Это можно сделать без регулярных выражений. С учетом строки:

 s = "path:bte00250 Alanine, aspartate ... path:bte00330 Arginine and ..." 

Мы можем временно заменить искомое слово на местозаполнитель. Заполнитель – это единственный символ, который мы используем для разделения:

 word, placeholder = "path:", "|" s = s.replace(word, placeholder).split(placeholder) s # ['', 'bte00250 Alanine, aspartate ... ', 'bte00330 Arginine and ...'] 

Теперь, когда строка разделена, мы можем присоединить исходное слово к каждой подстроке, используя понимание списка:

 ["".join([word, i]) for i in s if i] # ['path:bte00250 Alanine, aspartate ... ', 'path:bte00330 Arginine and ...'] 
  • Что означает «u» в списке?
  • Элементарная конкатенация строк в numpy
  • Использование str.contains в pandas dataframe
  • Почему Python быстрее, чем C при конкатенации двух строк?
  • pandas заменяет (стирает) разные символы из строк
  • Преобразование строки в словарь python
  • Как эти строки представлены внутри интерпретатора Python? Я не понимаю
  • Потенциальные исключения с использованием встроенного типа str () в Python
  • Ошибка: объект курсора не имеет атрибута _last_executed
  • Определение того, сколько раз подстрока встречается в строке в Python
  • Добавление десятизначного целого в список объединяет некоторые записи с символом "L"
  •  
    Interesting Posts for Van-Lav

    Флажок Basic HTTP Auth использует страницу входа в систему

    Настройка производительности Postgresql и использования памяти в рабочем процессе python

    Как сделать объекты Python постоянными в веб-приложении?

    Как получить уведомление на рынке Google

    Как вычесть значения из словарей

    Как создать пользовательскую функцию активации только с Python в Tensorflow?

    Кластеризация текстовых документов с использованием scikit-learn kmeans в Python

    urlfetch gzip google для строки в строку

    Python исключает дубликаты списка с нераскрывающимися элементами в одной строке

    python numpy создает неожиданные результаты

    Агрегирование данных и получение суммы и количества

    Как включить / отключить несколько кнопок отправки в форме в зависимости от выбора переключателя

    Обновление виджета метки python / tkinter?

    Почему мои виджеты Tkinter сохраняются как None?

    Невозможно включить режим отладки в Flask

    Python - лучший язык программирования в мире.