Как разбить список списка по номерам? - PullRequest
3 голосов
/ 11 июля 2019
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']

У меня есть список имен людей, идентификаторов, DOB и профессий.Я хочу разделить каждого человека по именам, ID, DOB и их профессиям.

Я попробовал какой-то глупый подход, но могу выполнять только часть работы, и мне было интересно, есть ли лучшие решения?

Ниже мой код:

import re 

def remove(my_list): 
    pattern = '[0-9]'
    my_list = [re.sub(pattern, '', i) for i in my_list] 
    return my_list

print(remove(my_list))

Но номера пропали ['Rob Kardashian -- Reality Star', 'Brooke Barry -- TikTok Star', 'Bae De Leon -- Volleyball Player', 'Jonas Blue -- Music Producer']

Затем я удалил '-'

[s.replace(' -- ',' ') for s in remove(my_list)]

['Rob Kardashian  Reality Star','Brooke Barry  TikTok Star','Bae De Leon  Volleyball Player','Jonas Blue  Music Producer']

Мойожидаемые результаты будут кадром данных:

enter image description here

pd.DataFrame(my_list)

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 11 июля 2019

Вы можете использовать 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: соответствует любому экземпляру пробела, за которым следует цифра.

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