[英]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.