Python 如何提取关键字和日期前后的文本
我想将作者姓名、域和日期从数据框列中分离出来 当 .split(“in”) 很好地分离了左边的作者姓名,我还想分离域名和日期,这不是通过一个空格符号分开Python 如何提取关键字和日期前后的文本,python,pandas,text,Python,Pandas,Text,我想将作者姓名、域和日期从数据框列中分离出来 当 .split(“in”) 很好地分离了左边的作者姓名,我还想分离域名和日期,这不是通过一个空格符号分开 从导入数据帧 Cars={'Details':['Daniel Jacobs in HackeMoon.com 2017年7月31日','Wil Zelk in WebsiteAb.deJan 28','Wil Zelk in anotherwebsite.chJan 28,2019'], } df=数据帧(车辆,列=['Details'])
从导入数据帧
Cars={'Details':['Daniel Jacobs in HackeMoon.com 2017年7月31日','Wil Zelk in WebsiteAb.deJan 28','Wil Zelk in anotherwebsite.chJan 28,2019'],
}
df=数据帧(车辆,列=['Details'])
打印(df)
您可以结合正则表达式尝试
DataFrame.str.extract
:
df['Details'].str.extract(r'(?P<author>.*?) in (?P<url>.*)(?P<date>[A-Z].*)', expand=True)
为了分离字符串,我使用以下假设:
- 名称和url之间用“in”分隔
- 日期的第一个字符(仅第一个字符)是大写字母(因此字符串中的最后一个大写字符标记日期部分的第一个字符)
python Cars={'Details':['Daniel JacobsJul 31,2017','Wil Zelk in websiteab.deJan 28','Wil Zelk in anotherwebsite.chJan 28,2019'],}df=DataFrame(Cars,columns=['Details'])print(df
只要每行中都有日期,df['Details'].str.extract(r'(?P.*?:in){0,1}(?P\S*?)\S*(?P[A-Z][^A-Z]*?$),expand=True)
。url模式中的\S*
只是使用了一个事实,url通常不包含空格(它匹配除空格以外的所有字符)。同样,您的答案非常有用!
df['Details'].str.extract(r'(?P<author>.*?) in (?P<url>.*)(?P<date>[A-Z].*)', expand=True)
author url date
0 Daniel Jacobs HackeMoon.com Jul 31, 2017
1 Wil Zelk websiteabc.de Jan 28
2 Wil Zelk anotherwebsite.ch Jan 28, 2019