Python 如何从对象数据类型中提取特定的单词/数值?
我正在尝试使用python(无关)为我的公司自动化一些东西,这就是我的问题所在。 首先,我正在从邮箱中的特定文件夹创建数据帧。(在此之前没有问题)Python 如何从对象数据类型中提取特定的单词/数值?,python,regex,python-3.x,pandas,Python,Regex,Python 3.x,Pandas,我正在尝试使用python(无关)为我的公司自动化一些东西,这就是我的问题所在。 首先,我正在从邮箱中的特定文件夹创建数据帧。(在此之前没有问题) 范围索引:36个条目,0到35 数据列(共6列): #列非空计数数据类型 --- ------ -------------- ----- 0未命名:0 36非空int64 1日期36非空datetime64[ns] 2主题36非空对象 3.36非空对象 4 Body 36非空对象 5 OpportunityID
范围索引:36个条目,0到35
数据列(共6列):
#列非空计数数据类型
--- ------ -------------- -----
0未命名:0 36非空int64
1日期36非空datetime64[ns]
2主题36非空对象
3.36非空对象
4 Body 36非空对象
5 OpportunityID 36非空对象
数据类型:datetime64[ns](1)、int64(1)、object(4)
内存使用率:1.8+KB
正文栏包含电子邮件线索(很长);但所有这些线索都包含我关心的两条基本信息:
Won/Won/Lost/Lost/Active/Active/Hold/Hold
re.findall(r“\d+”,df.Body)
给出:
TypeError:预期的字符串或字节,如对象
主体柱示例:
亲爱的XX:
不幸的是,我们已经失去了这个
致意
XXX
发件人:XXXX
发送日期:2020年4月15日星期三下午4:46
收件人:XXX
抄送:XXX
主题:提醒更新X
我们正在清理管道,请您提供以下opportunity的状态更新
请说明它是活动的/赢的/丢失的还是取消的
详情如下:
- 商机ID:12345678
- 客户名称:X
- 机会描述:X
- 业务合伙人:X
- 业务经理:X
- 总费用:1033000
- 总费用(百万美元):
df['Opportunity_ID']=df['Body'].str.extract(r'Opportunity\s+ID\s*:\s*(\d{8})')
df['Keyword']=df['Body'].str.extract(r'(?i)\b(won|lost|active|hold)\b')
第一个Opportunity\s+ID\s*:\s*(\d{8})regex匹配Opportunity
、一个或多个空格(带\s+
)、一个ID
子字符串、一个包含0+空格字符的冒号(请参见\s*:\s*
),然后将任意八位数字捕获到组1中(请参见(\d{8})
r'(?i)\b(won | lost | active | hold)\b'
模式只匹配捕获组中的四个备选方案中的任何一个(在
交替操作符的帮助下连接),以不区分大小写的方式作为整个单词(\b
是单词边界)(请参见(?i)
修饰符).主体值的类型是什么?它们是JSON字符串还是仅字符串?如果它们是长字符串,您能否提供一个示例(或一些示例),我们目前不知道在不知道值的情况下如何进行解析。好的,请尝试df['Opportunity\u ID']=df['Body'].str.extract(r'Opportunity\s+ID\s*:\s*(\d{8})
和df['Keyword']=df['Body'].str.extract(r'(?i)\b(won | lost | active | hold)\b')
和printdf
添加了Body列的描述非常感谢!在过去的6个小时里一直在与re抗争!!
df['Opportunity_ID']=df['Body'].str.extract(r'Opportunity\s+ID\s*:\s*(\d{8})')
df['Keyword']=df['Body'].str.extract(r'(?i)\b(won|lost|active|hold)\b')