繁体   English   中英

如何按编号拆分列表?

[英]How to split a list of list by numbers?

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']

我有一个人名,ID,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']

我的预期产出将是一个数据帧:

在此输入图像描述

pd.DataFrame(my_list)

谢谢你的帮助。

你可以使用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']]

正则表达式解释:

\\s(?=\\d) :匹配空格后跟数字的任何实例。

| (交替):尝试将每个表达式匹配到其左侧,或者将每个表达式匹配到右侧,一旦找到有效匹配就停止。

(?<=\\d)\\s :匹配数字前进的任何空格实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM