Последовательность слов с регулярным выражением - PullRequest
0 голосов
/ 02 августа 2020

У меня есть список строк, и я хочу извлечь из него только имя элемента с пробелами, если они есть.

Строки остаются в столбце с именем 0, а индекс предназначен только для справки .

Например, из каждой строки индекса мне нужны следующие результаты:

Индекс - Ожидаемый результат

0 - BOV BCONTRA

1 - BF PARAROLE C

2 - CUBINHOS DACE

... и т. Д.

Обратите внимание, что в строке 25 желаемый результат не отделены от предыдущих чисел пробелами

Между строкой слов в строке 30 индекса может быть точка ..

Я пробовал re.findall(r"\n\d{1,2} \d+(\b\w+\b)") безуспешно.

Также re.findall(r"\n\d{1,2} \d+( ?\w+)") дает мне только первое слово, и мне нужны все слова, а не только первое.

Строки начинаются с \n символ, что он не печатается в списке.

введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 02 августа 2020

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

re.findall('[A-Z]+[ A-Z]*', text)
0 голосов
/ 02 августа 2020

Кажется, вы хотите [A-Z .]+, а не «слова» (обозначенные r'\w'), окаймленные целыми числами. \w сопоставляется с [a-zA-Z0-9_].

Это строка Regex, которая должна иметь: r'\d+ \d+([A-Z .]+)\d+'.

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

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