gpt4 book ai didi

python - 仅从字符串中去除完全匹配的子字符串

转载 作者:行者123 更新时间:2023-12-04 10:51:55 24 4
gpt4 key购买 nike

我有一个 df 看起来像这样:

name                           id
John McNamara 3498
Jane Adams, M.D. 6725
Nour Abd Almohsen Jr M.D. 0197
Alex Ambrose PhD 3287
Nancy Ann Brown, MPH, PhD 9127
Kathy W. 4389
Jack Joshua Smith White 6756
MPHJackie Goldman 3294
Mort Evans 5586

我正在寻找一种从列表中剥 ionic 字符串的方法,而不会过度剥离。
我试过使用 lstrip但是传入包含 MD、MPH 等内容的列表会导致从不包含这些子字符串的名称中删除单个字母(即 Mort Evans 变为 ort Evans)。使用 .replace也失败了,因为它无法识别意外连接到名称上的子字符串(即 MPHJackie Goldman 仍然存在)。

理想情况下,我希望输出如下所示:
name                           id
John McNamara 3498
Jane Adams 6725
Nour Abd Almohsen Jr. 0197
Alex Ambrose PhD 3287
Nancy Ann Brown 9127
Kathy W. 4389
Jack Joshua Smith White 6756
Jackie Goldman 3294
Mort Evans 5586

最佳答案

这是最后一个应该匹配的一个。 IT 可能会更好,但我创建了一个 regex101,您可以使用它进行测试:

r'(M\.D\.,? ?$)|(PhD,? ?$)|(MPH,? ?)|(,)'

该站点包含您所有的匹配项和正则表达式以及它匹配的内容:

https://regex101.com/r/nyaAqJ/3

这是一个适用于剥离的应用程序,因为剥离似乎有一个奇怪的行为:
import re
df['name'].apply(lambda x: re.sub(r'(?:=M\.D\.,? ?$)|(PhD,? ?$)|(MPH,? ?)|(,)', '', x))

如果这有效:
df['name'] = df['name'].apply(lambda x: re.sub(r'(?:=M\.D\.,? ?$)|(PhD,? ?$)|(MPH,? ?)|(,)', '', x))

我希望这会有所帮助,如果您需要任何更新,或者发现它不起作用的用例,请告诉我

关于python - 仅从字符串中去除完全匹配的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59439796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com