Вы можете использовать re.split
:
import re
my_list = ['Rob Kardashian 00052369 1987-03-17 Reality Star', 'Brooke Barry 00213658 2001-03-30 TikTok Star', 'Bae De Leon 00896351 1997-08-02 Volleyball Player','Jonas Blue 02369785 1990-08-02 Music Producer']
new_l = [re.split('\s(?=\d)|(?<=\d)\s', i) for i in my_list]
Выход:
[['Rob Kardashian', '00052369', '1987-03-17', 'Reality Star'],
['Brooke Barry', '00213658', '2001-03-30', 'TikTok Star'],
['Bae De Leon', '00896351', '1997-08-02', 'Volleyball Player'],
['Jonas Blue', '02369785', '1990-08-02', 'Music Producer']]
Regex объяснение:
\s(?=\d)
: соответствует любому экземпляру пробела, за которым следует цифра.
|
(чередование): пытается сопоставить каждое выражение слева или каждое выражение справа, останавливаясь, как только оно находит действительное совпадение.
(?<=\d)\s
: соответствует любому экземпляру пробела, за которым следует цифра.