Разделить строку после определенного целочисленного набора символов - PullRequest
0 голосов
/ 13 января 2019

У меня есть строка, хранящаяся в переменной mystring. Я хотел разбить строку после шаблона character 4-digit-integer character, т.е. (4-значное целое число) . Я полагаю, это можно сделать с помощью регулярных выражений Python.

mystring = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'

Желаемый выход:

splitstring = ['Lorem Ipsum (2018)', 'Amet (Lorem Dolor Amet Elit)']

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вот простой способ, как вы могли бы это сделать.

Так как скобки имеют другое значение в RE (они называются группами захвата), вам необходимо экранировать их как: \( для открывающей скобки. Затем вы можете найти (2018), а затем разделить текст в соответствии:

import re
s = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'
match = re.search(r'\(\d{4}\)', s)

split_string = [ s[:match.end()], s[match.end():] ]
print(split_string) 
# ['Lorem Ipsum (2018)', ' Amet (Lorem Dolor Amet Elit)']
0 голосов
/ 13 января 2019

Если вы не возражаете против фильтрации, вы можете:

import re

string = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'
result = [m for m in re.split('([^\d(]+\(\d{4}\))\s+', string) if m]
print(result)

выход

['Lorem Ipsum (2018)', 'Amet (Lorem Dolor Amet Elit)']

При использовании split с группой захвата результат будет включать группу в этом случае ([^\d(]+\(\d{4}\)), т. Е. Все, что не является ни числом, ни открывающей скобкой, за которой точно следуют четыре числа, заключенные в скобки. Нет, следующие пробелы \s+ не указаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...