Вы можете использовать для этого re.split
следующим образом:
import re
s = "1. e4 e5 2. Nf3 Nf6 3. Nc3 d6 4. Bc4 h6 5. d3 Be7 6. Be3 Nc6"
moves = re.split(r'\s*\d+\.\s*', s)
print(moves)
Вывод:
['', 'e4 e5', 'Nf3 Nf6', 'Nc3 d6', 'Bc4 h6', 'd3 Be7', 'Be3 Nc6']
Обратите внимание, что я использовал так называемую необработанную строку (или r-строку) , поэтому мне не нужно экранировать \
, я использовал шаблон, который можно было бы прочитать как:
- 0 или более пробелов
- 1 или более цифр (0-9)
.
(это необходимо экранировать, поскольку .
имеет особое значение в шаблонах) - 0 или более пробелов
Если вы предпочитаете интерактивное объяснение, вы можете вставить этот шаблон в regex101.com . Обратите внимание, что в начале ходов стоит пустой str
, но его можно легко удалить с помощью нарезки списка (например, moves = moves[1:]
)