Я пытаюсь очистить числа в начале строки, за которыми следует ключевое слово. Это число может быть выражено как digit
(1 2 3), ordinal number
(1-й 2-й 3-й) или strings
(один два три).
Идея состоит в том, чтобы сохранить все числа непосредственно перед ключевое слово Предположим, что ключевыми словами являются basic|main|foundation
. Например, следующие числа сохраняются, потому что за ними следует ключевое слово basic
:
'one two three basic', '1 2 3 basic', '1st 2nd 3rd basic'
С другой стороны, установка слова перед ключевым словом требует удаления чисел. Например, следующие цифры пропали, потому что за ними следует very
, а не ключевое слово:
'one two three very basic', '1 2 3 very basic', '1st 2nd 3rd very basic'
Это пример ввода:
text=['one two three basic', '1 2 3 basic', '1st 2nd 3rd basic',
'one two three very basic', '1 2 3 very basic', '1st 2nd 3rd very basic']
Это ожидаемые строки :
expected=['one two three basic', '1 2 3 basic', '1st 2nd 3rd basic',
'very basic', 'very basic', 'very basic']
Я пробовал это до сих пор без желаемых результатов:
import re
text=['one two three basic', '1 2 3 basic', '1st 2nd 3rd basic',
'one two three very basic', '1 2 3 very basic', '1st 2nd 3rd very basic']
for element in text:
element = re.sub(
r'(^((?:\d+(?:(st|[rd]d|th))?\s+)+|(?:(one|two|three)+\s+)+))(?!(?:(basic|main|foundations)$))',
'',
element,
0,
re.IGNORECASE)
print(element)
Заранее спасибо за вашу помощь