string - 在 pandas 列中的 split() 方法之后提取第一个单词
问题描述
我有一个 df 列的句子(df.sentence),如下所示:
sentence
His name is Paul. He's in jail.
Her name is Allison. She's a doctor.
He is named Steve. He's an engineer.
等等
目前,我有一个循环设置如下来提取名称:
for i in range(len(df.sentence):
if 'name is' in df['sentence'][i]:
name = re.findall(r'(?<=name is\s)[a-z]+',str(df['sentence'][i]),re.I)
然而,这不起作用。或者我可能需要帮助正确设置正则表达式。
更新(不正确输出):
for i in range(len(df)):
if '[name is|named]' in df['sentence'][i]:
name = df.sentence.i.str.extract('[name is|named]\s(.*?)(?=\.|\s)')
else:
pass
解决方案
使用后向断言:
df.str.extract(r'(?<= name is |is named )(\w+)')
输出:
0
0 Paul
1 Allison
2 Steve
推荐阅读
- neo4j - 我如何找到 neo4j 密码?
- python - 使用 Selenium 和 python 在网页上查找文本,然后直接在其下方获取文本
- c++ - 除非在应用程序窗口外单击,否则 WM_COMMAND 无法完成请求,
- javascript - 有没有比我这样做更有效的方法来排序标题数组(没有前导引号或文章)?
- r - R:四舍五入到不同的阈值
- angular - 我从 gitlab 克隆了一个 .net core 和 angular 项目,并且还安装了 node 模块。但是当我运行项目时为什么我发现无法获取/
- amazon-web-services - 如何为 s3 事件添加触发器?
- c - 取malloc()、realloc()和free()的地址是否可移植?
- node.js - 在 Node.js 中获取 256 位 AES GCM 加密的正确标签时遇到问题
- javascript - 反应导入在节点模块缓存内而不是在节点模块文件夹内查找?